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

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

Android自定義日歷效果

瀏覽:163日期: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久久,三上悠亚国产精品一区二区三区
麻豆精品视频在线| 久久精品播放| 欧美.日韩.国产.一区.二区| 久久久久99| 欧洲一区二区三区精品| 日韩一区二区三区免费| 99久久激情| 国产韩日影视精品| 亚洲一区二区成人| 中文字幕一区二区三区在线视频| 午夜在线播放视频欧美| 亚洲美女91| 国产日本精品| 久久99精品久久久久久园产越南| 欧美成人综合| 日韩精品一二区| 日韩激情中文字幕| 国产欧美一区二区三区国产幕精品 | 欧美成a人国产精品高清乱码在线观看片在线观看久| 麻豆高清免费国产一区| 91亚洲国产高清| 久久国产直播| 视频一区中文字幕| 久久国际精品| 91欧美在线| 国产主播一区| 亚洲精品激情| 麻豆精品蜜桃视频网站| 国产粉嫩在线观看| 亚洲精品网址| 97久久精品| 日韩理论视频| 丝袜亚洲精品中文字幕一区| 国产亚洲电影| 免费一二一二在线视频| 亚洲欧美日本日韩| 国产精品综合| 欧美精品一区二区三区精品| 日本h片久久| 欧美男人天堂| 日韩成人亚洲| 日韩三级精品| 国产成人黄色| 国产国产精品| 国产精品日韩精品在线播放| 91精品亚洲| 69精品国产久热在线观看| 国产欧美一区二区三区精品酒店| 国产韩日影视精品| 国产精品久久久久久久久久齐齐| 亚洲a一区二区三区| 日韩国产在线观看一区| 久久九九99| 国产亚洲一卡2卡3卡4卡新区| av在线日韩| 国产亚洲精品精品国产亚洲综合| 久久久久一区| 国产精品videossex久久发布 | 天堂√中文最新版在线| 香蕉成人久久| 国内精品麻豆美女在线播放视频| 欧美日韩精品一本二本三本| 国产精品mm| 日韩视频久久| 久久伊人国产| 亚洲资源网站| 婷婷综合六月| 国产日韩亚洲欧美精品| 欧美高清不卡| 久久不卡日韩美女| 国产精品外国| 成人亚洲一区| 色综合视频一区二区三区日韩 | 亚洲视频电影在线| 中文字幕一区久| 国产欧美一区二区精品久久久| 国产精品日韩久久久| 日韩欧美一区二区三区免费看| 成人精品天堂一区二区三区| 国产亚洲欧美日韩在线观看一区二区| 欧美日韩国产在线一区| 97精品在线| 日韩欧美2区| 亚洲二区免费| 国产精品原创| 欧美极品一区二区三区| 亚洲18在线| 亚洲欧美视频一区二区三区| 久久九九精品| 国产精品毛片一区二区在线看| 日本aⅴ免费视频一区二区三区| 红桃视频亚洲| 999久久久免费精品国产| 国产伊人久久| 免费在线欧美黄色| 91成人精品观看| 一区二区三区午夜视频| 91精品精品| 精品丝袜在线| 97精品视频在线看| 国产中文欧美日韩在线 | 日韩欧美中文字幕在线视频| 国产精品日本欧美一区二区三区| 久久高清免费| 亚洲性色av| 91亚洲国产| 精品三级在线| 国产精品一级| 久久国内精品视频| 久久精品99国产精品日本| 97久久精品| 日本中文字幕不卡| 午夜久久av| 婷婷亚洲成人| 中文字幕亚洲精品乱码| 蜜桃视频一区二区三区在线观看| 亚洲一区激情| 石原莉奈在线亚洲三区| 精品五月天堂| 国产不卡精品在线| 水蜜桃精品av一区二区| 精品国产一区二区三区性色av| 国产精品久久久网站| 嫩草伊人久久精品少妇av杨幂| 国产精品久久久久久久久久白浆| 国产精品一级| 久久av国产紧身裤| 久久精品一本| 国产一区二区三区视频在线| 成人亚洲一区二区| 日韩毛片在线| 蜜桃国内精品久久久久软件9| 不卡视频在线| 久久夜色精品| 日本一不卡视频| 国产精品一区二区免费福利视频| 免费在线亚洲欧美| 国产麻豆久久| 欧美在线亚洲综合一区| 免费日韩一区二区| 日韩精品中文字幕一区二区| 日本午夜精品一区二区三区电影| 国产情侣久久| 福利欧美精品在线| 私拍精品福利视频在线一区| 欧美日韩精品一本二本三本| 亚洲18在线| 老司机精品视频网| 国产v综合v| 蜜臀久久久99精品久久久久久| 97精品久久| 久久精品九色| 亚洲福利精品| 日韩精品中文字幕吗一区二区| 美女久久久久久 | 国产福利91精品一区二区| 日本综合字幕| 亚洲在线观看| 国产日韩欧美在线播放不卡| 精品国产免费人成网站| 九一精品国产| 日韩欧美中文在线观看| 精品一区二区三区中文字幕 | 国产精品.xx视频.xxtv| 激情国产在线| 麻豆亚洲精品| 国产日产精品_国产精品毛片| 天堂8中文在线最新版在线| 麻豆成人在线| 精品一区二区三区中文字幕| 欧美日韩在线网站| 亚洲精品黄色| 国产资源在线观看入口av| 99视频+国产日韩欧美| 国产欧美自拍| 亚洲一级高清| 欧美一区二区三区久久精品| 日韩在线观看不卡| 日本精品国产| 日韩和的一区二在线| 少妇精品久久久一区二区| 狂野欧美性猛交xxxx| 亚洲综合另类| 国产成人a视频高清在线观看| 99视频一区| 久久精品欧洲| 亚洲一区二区三区中文字幕在线观看| 麻豆精品一区二区综合av| 国产农村妇女精品一二区| 精品日韩一区| 亚洲狼人精品一区二区三区| 日韩久久精品网| 久久精品xxxxx| 欧美 日韩 国产一区二区在线视频| 国产欧美午夜| 国产亚洲精品自拍| 精品亚洲二区| 日韩不卡免费视频| 在线亚洲一区| 黄色在线网站噜噜噜|