日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android自定義日歷效果

瀏覽:162日期:2022-09-24 09:32:25

因為工作功能需求,自定義一個日歷,效果如下,點擊選中日歷

Android自定義日歷效果

使用github上面一個前輩的框架

implementation ’com.necer.ncalendar:ncalendar:5.0.0’implementation ’com.github.CodingEnding:PopupLayout:v1.0’//poplayout

框架使用基本類型地址,大家可以根據需要學習修改:地址

自定義日歷的xml文件

<?xml version='1.0' encoding='utf-8'?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='wrap_content' tools:context='.CalendarActivity'> <View android: android:layout_width='320dp' android:layout_height='40dp' android:background='@drawable/calendar_bg' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintTop_toTopOf='parent' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_marginStart='18dp' android:text='2018' android:textColor='#ffffff' android:textSize='16sp' app:layout_constraintBottom_toBottomOf='@id/title_bar' app:layout_constraintStart_toStartOf='@id/title_bar' app:layout_constraintTop_toTopOf='@id/title_bar' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_marginStart='18dp' android:text='四' android:textColor='#ffffff' android:textSize='18sp' app:layout_constraintBottom_toBottomOf='@id/title_bar' app:layout_constraintEnd_toEndOf='@id/title_bar' app:layout_constraintStart_toStartOf='@id/title_bar' app:layout_constraintTop_toTopOf='@id/title_bar' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:text='月' android:textColor='#ffffff' android:textSize='18sp' app:layout_constraintBottom_toBottomOf='@id/title_bar' app:layout_constraintStart_toEndOf='@id/month' app:layout_constraintTop_toTopOf='@id/title_bar' /> <com.necer.view.WeekBar android: android:layout_width='320dp' android:layout_height='wrap_content' android:layout_marginTop='10dp' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintTop_toBottomOf='@id/title_bar' /> <com.necer.calendar.MonthCalendar android: android:layout_width='320dp' android:layout_height='280dp' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintTop_toBottomOf='@id/week' /> <View android: android:layout_width='320dp' android:layout_height='40dp' android:background='@drawable/calendar_bg_bottom' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintTop_toBottomOf='@id/month_calendar' /> <TextView android: android:layout_width='0dp' android:layout_height='wrap_content' android:gravity='center' android:onClick='lastYear' android:text='上一年' android:textColor='#ffffff' app:layout_constraintBottom_toBottomOf='@id/bottom_view' app:layout_constraintEnd_toStartOf='@id/dividerOne' app:layout_constraintStart_toStartOf='@id/bottom_view' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <View android: android:layout_width='1dp' android:layout_height='40dp' android:background='#ffffff' app:layout_constraintEnd_toStartOf='@id/lastMonth' app:layout_constraintStart_toEndOf='@id/lastYear' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <TextView android: android:layout_width='0dp' android:layout_height='wrap_content' android:gravity='center' android:onClick='lastMonth' android:text='上個月' android:textColor='#ffffff' app:layout_constraintBottom_toBottomOf='@id/bottom_view' app:layout_constraintEnd_toStartOf='@id/dividerTwo' app:layout_constraintStart_toEndOf='@id/dividerOne' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <View android: android:layout_width='1dp' android:layout_height='40dp' android:background='#ffffff' app:layout_constraintEnd_toStartOf='@id/nextMonth' app:layout_constraintStart_toEndOf='@id/lastMonth' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <TextView android: android:layout_width='0dp' android:layout_height='wrap_content' android:gravity='center' android:text='下個月' android:textColor='#ffffff' android:onClick='nextMonth' app:layout_constraintBottom_toBottomOf='@id/bottom_view' app:layout_constraintEnd_toStartOf='@id/dividerThree' app:layout_constraintStart_toEndOf='@id/dividerTwo' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <View android: android:layout_width='1dp' android:layout_height='40dp' android:background='#ffffff' app:layout_constraintEnd_toStartOf='@id/nextYear' app:layout_constraintStart_toEndOf='@id/nextMonth' app:layout_constraintTop_toTopOf='@id/bottom_view' /> <TextView android: android:layout_width='0dp' android:layout_height='wrap_content' android:gravity='center' android:text='下一年' android:textColor='#ffffff' android:onClick='nextYear' app:layout_constraintBottom_toBottomOf='@id/bottom_view' app:layout_constraintEnd_toEndOf='@id/bottom_view' app:layout_constraintStart_toEndOf='@id/dividerThree' app:layout_constraintTop_toTopOf='@id/bottom_view' /></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity,日歷的功能重寫也是在和這個函數中

package com.example.calendartest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.codingending.popuplayout.PopupLayout;import com.necer.calendar.BaseCalendar;import com.necer.calendar.MonthCalendar;import com.necer.enumeration.CheckModel;import com.necer.enumeration.DateChangeBehavior;import com.necer.listener.OnCalendarChangedListener;import org.joda.time.LocalDate;public class MainActivity extends AppCompatActivity { PopupLayout popupLayout; View calendarView; TextView mYear, mMonth, lastYear, nextYear, lastMonth, nextMonth; MonthCalendar monthCalendar; int currentYear, currentMonth; Button intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = findViewById(R.id.intent); calendarView = View.inflate(this, R.layout.calendar, null); popupLayout = PopupLayout.init(this, calendarView); } public void intent(View view) { initCalendar(); popupLayout.show(PopupLayout.POSITION_CENTER); } public void initCalendar() { monthCalendar = calendarView.findViewById(R.id.month_calendar); mYear = calendarView.findViewById(R.id.year); mMonth = calendarView.findViewById(R.id.month); lastYear = calendarView.findViewById(R.id.lastYear); nextYear = calendarView.findViewById(R.id.nextYear); lastMonth = calendarView.findViewById(R.id.lastMonth); nextMonth = calendarView.findViewById(R.id.nextMonth); monthCalendar.setCheckMode(CheckModel.SINGLE_DEFAULT_UNCHECKED); monthCalendar.setOnCalendarChangedListener(new OnCalendarChangedListener() { @Override public void onCalendarChange(BaseCalendar baseCalendar, int year, int month, LocalDate localDate, DateChangeBehavior dateChangeBehavior) { mYear.setText(String.valueOf(year)); mMonth.setText(String.valueOf(month)); intent.setText(String.valueOf(localDate)); currentYear = year; currentMonth = month; new Handler().postDelayed(new Runnable() { @Override public void run() { popupLayout.dismiss(); } },800); } }); } public void lastMonth(View view) { monthCalendar.toLastPager(); } public void nextMonth(View view) { monthCalendar.toNextPager(); } public void nextYear(View view) { monthCalendar.jumpDate(currentYear + 1, currentMonth, 1); } public void lastYear(View view) { monthCalendar.jumpDate(currentYear - 1, currentMonth, 1); }}

GitHub下載地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲免费高清| 国产精品久久久久久妇女| 亚洲欧美专区| aa亚洲婷婷| 美美哒免费高清在线观看视频一区二区| 四虎成人精品一区二区免费网站| 亚洲欧美视频| 青草av.久久免费一区| 国产欧美大片| 国产精品一区二区三区美女| 国产精品伊人| 国产一区丝袜| 久久中文字幕av| 国产精品99在线观看| 久久久久免费| 欧美午夜精彩| 天使萌一区二区三区免费观看| 综合激情视频| 久久久久九九精品影院| 久久精品国产久精国产| 久久男人天堂| 欧美日韩四区| 国产精品久久国产愉拍| 国产在线|日韩| 亚洲另类黄色| 精品久久久中文字幕| 欧美另类综合| 久久久精品国产**网站| 欧美日韩国产观看视频| 午夜在线一区二区| 久久久久黄色| 亚洲精品第一| 久久激情网站| 久久wwww| 香蕉久久久久久久av网站| 欧美国产专区| 好吊日精品视频| 国产精品网站在线看| 国产在线成人| 亚洲精品极品| 亚洲电影有码| 亚洲在线一区| 日韩高清欧美| 成人国产综合| 六月婷婷一区| 粉嫩av一区二区三区四区五区| 日韩va欧美va亚洲va久久| japanese国产精品| 高清av不卡| 国产高清亚洲| 91午夜精品| 亚洲免费成人av在线| 91一区二区三区四区| 国产精品免费精品自在线观看| 蜜臀久久99精品久久久久宅男 | 亚洲成人免费| 福利一区二区免费视频 | 欧美特黄一级大片| 日韩在线高清| 中文在线а√在线8| 欧美国产专区| 美腿丝袜亚洲三区| 日本不卡高清视频| 热久久国产精品| 噜噜噜躁狠狠躁狠狠精品视频| 伊人影院久久| 亚洲www啪成人一区二区| 精品99久久| 91欧美在线| 日韩欧美少妇| 婷婷国产精品| 免费在线成人网| 亚洲精品黄色| 国产精品探花在线观看| 国产精品一站二站| 国产福利一区二区精品秒拍| 国产精品传媒麻豆hd| 精品国产一区二区三区2021| 日韩毛片视频| 午夜日本精品| 色婷婷成人网| 日韩av中文在线观看| 国产日本精品| 色在线视频观看| 国产精品日韩欧美一区| 日本不卡视频一二三区| 国产毛片精品| 日韩欧美精品| 免费成人性网站| 水蜜桃久久夜色精品一区| 亚洲欧美日韩在线观看a三区| 69堂精品视频在线播放| 风间由美中文字幕在线看视频国产欧美| 久草免费在线视频| 亚洲精品日本| 久久精品国产99国产精品| 日韩精品一区二区三区免费观影| 青青青免费在线视频| 综合亚洲自拍| av一区在线| 国产免费av国片精品草莓男男| 欧美日韩在线二区| 麻豆传媒一区二区三区| 在线国产日韩| 国产精品99免费看| 久久av中文| 日韩精品午夜视频| 香蕉国产精品| 日韩大片在线观看| 欧美日韩亚洲国产精品| 亚洲一区二区成人| 色爱av综合网| 美女被久久久| 亚洲91视频| 日本一区二区中文字幕| 久久中文亚洲字幕| 日韩.com| 国产精品蜜月aⅴ在线| 丝袜亚洲另类欧美| 丁香六月综合| 国产va免费精品观看精品视频| 91国内精品| 亚洲18在线| 色综合视频一区二区三区日韩 | 久久久久久色 | 美女视频黄 久久| 欧美一级一区| 日韩毛片网站| 亚洲最大av| 日韩在线中文| 亚州av一区| 日韩国产在线观看| 日韩精品91亚洲二区在线观看| 亚洲在线免费| 在线综合亚洲| 国产亚洲一级| 亚洲一区二区小说| 日韩在线观看一区二区| 天堂va在线高清一区| 97久久精品| 成人国产综合| 久久久精品日韩| 激情91久久| 日韩高清一区| 911亚洲精品| 国产成人1区| 黄色亚洲大片免费在线观看| 亚洲三级精品| 国产精品对白久久久久粗| 久久久国产精品网站| 日本免费久久| 日韩影院精彩在线| 久久久久久久久成人| 蜜臀91精品国产高清在线观看 | 最新日韩欧美| 中文视频一区| 美女精品一区二区| 国产99久久| 久久国产精品久久w女人spa| 国产欧美一区二区三区精品观看| 亚洲精品成人图区| 亚洲一区欧美二区| 国产欧美日韩精品一区二区三区| 国产精品久久久久久久久久10秀| 亚洲一区成人| 蜜臀国产一区| 欧美日一区二区三区在线观看国产免 | 成人午夜在线| 亚洲一区二区小说| 你懂的国产精品| 欧美中文字幕一区二区| 国产伦理一区| 亚洲综合激情在线| 亚洲天堂久久| 久久免费影院| 亚洲激情另类| 成人在线免费观看网站| 精品三级久久久| 美腿丝袜亚洲一区| 国产麻豆一区| 97欧美在线视频| 成人在线视频免费| 樱桃视频成人在线观看| www.九色在线| 欧美日韩在线观看视频小说| 精品一区三区| 国产模特精品视频久久久久| 噜噜噜躁狠狠躁狠狠精品视频| 婷婷亚洲综合| 石原莉奈在线亚洲三区| 天海翼亚洲一区二区三区| 欧美日韩夜夜| 欧美日本精品| 91在线成人| av在线最新| 亚洲免费高清| 欧美精品黄色| 麻豆精品新av中文字幕| 免费观看不卡av| 国产精品视频3p|