国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android Kotlin Java 自定義日歷控件 CalendarView ,支持單選,多選,按星期選,跨月份日期范圍選擇,樣式設置,設置不可選日期,設置只可選日期

這篇具有很好參考價值的文章主要介紹了Android Kotlin Java 自定義日歷控件 CalendarView ,支持單選,多選,按星期選,跨月份日期范圍選擇,樣式設置,設置不可選日期,設置只可選日期。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

GitHub 源碼地下載

https://github.com/hdev0225/CalendarView

CalendarView 日歷控件

CalendarView 使用kotlin語言開發(fā),支持單選,多選,按星期選,跨月份日期范圍選擇,樣式設置,設置不可選日期,設置只可選日期

設置不可選擇日期,設置只可選擇某些日期

運行環(huán)境

AS 版本: Android Studio Dolphin | 2021.3.1

Android Gradle Plugin Version: 7.3.0

Gradle Version: 7.5

示例

Demo

安裝

1、添加JitPack倉庫到根路徑下的build.gradle

allprojects {
	repositories {
        // ...
        maven { url 'https://jitpack.io' }
    }
}

2、添加依賴到模塊中的build.gradle

dependencies {
    implementation 'com.github.hdev0225:CalendarView:v1.0.6'
}

日歷功能簡介

簡單應用
單選日歷 SingleCalendarView
多選日歷 MultiCalendarView
按星期選擇日歷 WeekCalendarView
日期范圍選擇 RangeCalendarView
設置樣式
設置不可選擇日期列表
設置只可選擇某些日期列表

簡單示例

默認情況下:開始日期為1970-1-1,結束日期為手機時間,并選中當前時間

<com.hdev.calendar.view.SingleCalendarView
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:layout_margin="15dp"
    android:background="@drawable/bg" />

單選日歷

安卓自定義日歷控件,android,android,kotlin

<com.hdev.calendar.view.SingleCalendarView
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:layout_margin="15dp"
    android:background="@drawable/bg" />
val calendarView: SingleCalendarView = findViewById(R.id.calendar_view)
// 事件監(jiān)聽        
calendarView.setOnSingleDateSelectedListener {
_, dateInfo ->
Toast.makeText(this@SingleActivity, dateInfo.toString(), Toast.LENGTH_LONG).show()}
// 開始日期        
var startDate = DateInfo(2023, 1, 15)
// 結束日期        
val endDate = DateInfo(2023, 4, 15)
// 選中2023-1-1
val selectedDate = DateInfo(2023, 1, 1)
// 初始化,設置日期范圍
calendarView.setDateRange(
    startDate.timeInMillis(),
    endDate.timeInMillis(),
    selectedDate.timeInMillis()
)

多選日歷

安卓自定義日歷控件,android,android,kotlin

<com.hdev.calendar.view.MultiCalendarView
    android:id="@+id/calendar_view"
    android:layout_width="wrap_content"
    android:layout_height="400dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/bg" />

val dateList = mutableListOf<DateInfo>()
dateList.add(DateInfo(2023, 5, 3))
dateList.add(DateInfo(2023, 5, 8))
dateList.add(DateInfo(2023, 5, 5))

val calendarView: MultiCalendarView = findViewById(R.id.calendar_view)
calendarView.setOnMultiDateSelectedListener {
_, clickedDate, dateList ->
}
// 設置選中日期列表
calendarView.selectedDateList = dateList

按星期選擇

安卓自定義日歷控件,android,android,kotlin

<com.hdev.calendar.view.WeekCalendarView
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="420dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp" />
// 開始日期
val startDate = DateInfo(2021, 12, 30)
// 結束日期        
val endDate = DateInfo(2023, 4, 15)
// 設置某一天,該星期會選中
val selectedDate = DateInfo(2022, 1, 1)

val calendarView: WeekCalendarView = findViewById(R.id.calendar_view)
// 事件監(jiān)聽        
calendarView.setOnDateRangeSelectedListener {
_, selecteDate, startDate, endDate ->
Toast.makeText(this@WeekActivity, "start: $startDate, end:$endDate", Toast.LENGTH_LONG).show()
}

日期范圍選擇

安卓自定義日歷控件,android,android,kotlin

 <com.hdev.calendar.view.RangeCalendarView
       android:id="@+id/calendar_view"
       android:layout_width="match_parent"
       android:layout_height="400dp"
       android:layout_marginLeft="10dp"
       android:layout_marginRight="10dp"
       android:background="#ffffff"
       app:header_view="com.hdev.calendar.view.DefaultRangeHeaderView"
       app:selected_bg_color="#0078D7"
       app:selected_end_bg_color="#ff0000"
       app:selected_end_day_color="#ffffff"
       app:selected_range_bg_color="#88ff0000"
       app:selected_range_day_color="#ffffff"
       app:selected_start_bg_color="#ff0000"
       app:selected_start_day_color="#ffffff" />
val calendarView: RangeCalendarView = findViewById(R.id.calendar_view)
// 設置日期范圍        
calendarView.setSelectedDateRange(DateInfo(2023, 2, 21), DateInfo(2023, 5, 13))
// 事件監(jiān)聽
calendarView.setOnDateRangeSelectedListener {
_, // 日歷控件
_, // 選中的日期
startDate: DateInfo, // 開始日期
endDate: DateInfo -> // 結束日期
Toast.makeText(this@RangeActivity, "${startDate.format()}---${endDate.format()}", Toast.LENGTH_SHORT).show()
}

設置日歷樣式

安卓自定義日歷控件,android,android,kotlin

<com.hdev.calendar.view.SingleCalendarView
    android:id="@+id/calendar_view"
    android:layout_width="350dp"
    android:layout_height="335dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/bg"
    app:day_font_size="16sp"
    app:default_color="#000000"
    app:default_dim_color="#AAAAAA"
    app:header_view="com.calendar.app.view.CustomHeaderView"
    app:selected_bg_color="#0078D7"
    app:selected_day_color="#EFEFEF"
    app:week_title_color="#ff0000"
    app:week_title_font_size="12sp"
    app:week_title_label="M、T、W、T、F、S、S"
    app:weekend_color="#F96A31" />
通用屬性

header_view:頭部,包名+類型,需要繼承BaseHeaderView類,自定義頭部

day_font_size:日期字體大小,eg: 16sp

week_title_color: 星期標題顏色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

week_title_font_size:星期標題字體大小, eg: 12sp;

week_title_label:星期標題,以頓號分割,如:一、二、三、四、五、六、日。起始星期為星期一;

注?。。。涸O置了first_day_of_week,需要同時設置week_title_label

first_day_of_week:一周的第一天,1表示星期一,2表示星期二,7表示星期天;

default_color:默認文字顏色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

default_dim_color:默認文字灰色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

weekend_color:周未字體顏色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

selected_bg_color:選中背景色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

selected_day_color:選中日子顏色,類型:顏色碼或者顏色引用, eg:#ffff00或者R.color.red;

selected_day_dim_color:范圍選擇或者按星期選擇的日歷時,該日期不能選擇,但在范圍或者星期之間, eg:#ffff00或者R.color.red;

日期范圍屬性

selected_range_bg_color:選中區(qū)間背景色,開始與結束之間的日期(不包括開始和結束日期), eg:#ffff00或者R.color.red;

selected_range_day_color:選中區(qū)間字體顏色,開始與結束之間的日期(不包括開始和結束日期), eg:#ffff00或者R.color.red;

selected_start_bg_color:開始日期背景色, eg:#ffff00或者R.color.red;

selected_start_day_color:開始日期字體顏色, eg:#ffff00或者R.color.red;

selected_end_bg_color:結束日期背景色, eg:#ffff00或者R.color.red;

selected_end_day_color:結束日期字體顏色, eg:#ffff00或者R.color.red;

設置不可選擇日期

val dateList = mutableListOf<DateInfo>()
dateList.add(DateInfo(2023, 4, 8))
dateList.add(DateInfo(2023, 4, 11))
dateList.add(DateInfo(2023, 3, 31))
val calendarView: WeekCalendarView = findViewById(R.id.calendar_view)
// setup un-clickable date
calendarView.unClickableDateList = dateList

設置只可選擇某些日期

val dateList = mutableListOf<DateInfo>()
dateList.add(DateInfo(2023, 4, 8))
dateList.add(DateInfo(2023, 4, 11))
dateList.add(DateInfo(2023, 3, 31))
val calendarView: WeekCalendarView = findViewById(R.id.calendar_view)
calendarView.clickableDateList = dateList

CalendarView方法說明

通用方法

unClickableDateList 設置不可點擊的日期列表

clickableDateList 設置只能點擊的日期列表

setDateRange 設置日期范圍,參數(shù):開始日期,結束日期,當前選中的日期

單先日歷

setSelectedDate 設置選中某一天,如:點擊按鈕后,跳轉到某一個日期

多選日歷

selectedDateList 設置選中的日期列表/獲取選中的日期列表

事件監(jiān)聽
/**
 * 單選接口回調(diào)
 */
OnSingleDateSelectedListener(
     view: SingleCalendarView, // 日歷控件
     selectedDate: DateInfo // 選中的日期
)

/**
 * 按星期選,區(qū)域選擇接口回調(diào)
 */
 OnDateRangeSelectedListener(
     view: BaseCalendarView, // 日歷控件
     selectedDate: DateInfo, // 選中的日期
     startDate: DateInfo, // 開始日期
     endDate: DateInfo // 結束日期
)

/**
 * 多選
 */
OnMultiDateSelectedListener(
    view: MultiCalendarView, // 日歷控件
    clickedDate: DateInfo, // 當前當點的日期,選中或者取消選中
    dateList: List<DateInfo>, // 日期列表
) 

DateInfo類說明

提供將dateInfo轉calendar

將calendar轉成dateInfo

將dateInfo轉毫秒

BaseHeaderView說明

自定義頭部,需要繼承BaseHeaderView,更新標題,顯示或者隱藏上下面,然后在xml布局文件中設置header_view,如下

app:header_view="com.calendar.app.view.CustomHeaderView"
/**
 * 獲取布局id,如:R.layout.default_header_view
 */
protected abstract fun getLayoutId(): Int

/**
 * 更新標題
 */
open fun updateTitle(year: Int, month: Int) {}

/**
 * 處理上、下按鈕
 * @param hasPrev 是否有上一頁
 * @param hasNext 是否有下一頁
 */
open fun handlePrevNext(hasPrev: Boolean, hasNext: Boolean) {}

IDateRange 接口說明

日期范圍選擇RangeCalendarView,如果自定義headerView實現(xiàn)該接口,可更新headerView日期范圍,可參考DefaultRangeHeaderView類文章來源地址http://www.zghlxwxcb.cn/news/detail-705930.html

class DefaultRangeHeaderView(
        context: Context
) : DefaultHeaderView(context), IDateRange {

	private lateinit var dateRangeLabel: TextView

	override fun dateRange(startDate: DateInfo?, endDate: DateInfo?) {
        if (startDate == null && endDate == null) {
        	dateRangeLabel.text = ""
        } else if (startDate != null && endDate != null) {
        	dateRangeLabel.text = "${startDate.format()} -- ${endDate.format()}"
        } else if (startDate != null) {
        	dateRangeLabel.text = startDate.format()
        }
    }

    override fun getLayoutId(): Int {
        return R.layout.default_range_header_view
    }

    override fun init() {
		super.init()
        dateRangeLabel = findViewById(R.id.date_range_label)
   }
}

到了這里,關于Android Kotlin Java 自定義日歷控件 CalendarView ,支持單選,多選,按星期選,跨月份日期范圍選擇,樣式設置,設置不可選日期,設置只可選日期的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Android GitHub開源庫CalendarView的使用

    Android GitHub開源庫CalendarView的使用

    學習并記錄一下,使用GitHub上面的日歷控件開源庫CalendarView,地址:https://github.com/huanghaibin-dev/CalendarView 實現(xiàn)效果如下: 添加Gradle依賴 實現(xiàn)MultiMonthView,可多選 比如我這里的四個畫筆分別對應的含義: 布局代碼使用示例 實現(xiàn)點擊()左右箭頭實現(xiàn)左右翻頁功能 可分別調(diào)用

    2024年04月25日
    瀏覽(443)
  • android 自定義車牌鍵盤(kotlin)

    android 自定義車牌鍵盤(kotlin)

    平時停車繳費都要填車牌號碼,就想著自己能不能也做個車牌鍵盤demo。 自定義車牌鍵盤能滿足(普通車牌,新能源,警車,軍車,領事館車,教練車以及特種車輛等車牌) 1、車牌前兩位默認是:粵A 2、第一個控件,默認是省份鍵盤 3、剩下控件,默認是abc鍵盤 4、當前輸入

    2024年02月16日
    瀏覽(24)
  • 推薦一個日歷轉換開源工具庫,支持C#、Java、PHP等主流的語言

    推薦一個日歷轉換開源工具庫,支持C#、Java、PHP等主流的語言

    日歷對我們來說,最熟悉的就是陽歷和農(nóng)歷,在中國每年都有固定的節(jié)日、節(jié)氣、中國特有傳統(tǒng)節(jié)日,有些節(jié)日是固定的,但是節(jié)氣這些都需要我們經(jīng)過一定規(guī)則換算出來。 所以,今天給大家推薦一個開源庫,它支持陽歷、陰歷、佛歷和道歷的日歷轉換,可以滿足我們的所有

    2024年02月06日
    瀏覽(23)
  • Android:自定義控件

    1.自定義VIEW組件 創(chuàng)建CustomizeView,繼承View。重寫onDraw方法,通過onDraw方法繪制我們自定義的圖像、位圖、路徑等。 示例: 創(chuàng)建對應layout文件,l_customize1.xml文件 示例: 補充:Canvas對象坐標變換方法 translate(100,100):平移變化; rotate(90):旋轉變化; scale():縮放變化; save():保存當前

    2024年02月20日
    瀏覽(16)
  • Android開發(fā)基礎——自定義控件

    Android開發(fā)基礎——自定義控件

    Android中常用控件和布局的繼承結構如下圖所示: ?從上面可以看出,所有控件都是直接或間接繼承自View的,所用的所有布局都是直接或間接繼承自ViewGroup的。View是Android中最基本的一種UI組件,其可以在屏幕上繪制一塊矩形區(qū)域,并能夠響應這塊區(qū)域的各種事件,因此,用戶

    2023年04月10日
    瀏覽(25)
  • Android開發(fā)之自定義控件-組合控件的開發(fā)與實現(xiàn)

    Android開發(fā)之自定義控件-組合控件的開發(fā)與實現(xiàn)

    最終實現(xiàn)的效果展示圖: ? 類似支付寶微信,底部分隔線對齊標題效果: ? ? ? 完整渲染顯示效果(包含三個條目右邊不同顏色的文字): 立體效果:? 隱藏資產(chǎn)總額條目右邊更多箭頭? 隱藏中國歷史條目右邊的文字: 隱藏中國歷史條目下邊的分隔線: 隱藏條目2中國歷史左

    2024年02月10日
    瀏覽(23)
  • 【Android】自定義Spinner控件及其使用

    【Android】自定義Spinner控件及其使用

    在 res/values/ 文件夾下新建一個 arrays.xml 文件: activity_main.xml 文件: 2.1 dropdown模式 效果: 2.2 dialog模式 效果: 在 res/drawable/ 文件夾下新建兩個文件: (1) shape_for_custom_spinner.xml 文件(用來定義下拉框的樣式): (2) selector_for_custom_spinner 文件(用來定義Spinner控件本身的樣

    2023年04月16日
    瀏覽(20)
  • Fullcalendar日歷使用,包括視圖選擇、事件插入、編輯事件、事件狀態(tài)更改、事件添加和刪除、事件拖動調(diào)整,自定義頭部,加入el-popover顯示圖片、圖片預覽、添加附件鏈接等,支持手機顯示。

    Fullcalendar日歷使用,包括視圖選擇、事件插入、編輯事件、事件狀態(tài)更改、事件添加和刪除、事件拖動調(diào)整,自定義頭部,加入el-popover顯示圖片、圖片預覽、添加附件鏈接等,支持手機顯示。

    Fullcalendar這個插件挺好,就是很多方法感覺官方文檔也沒怎么說,導致上手難度大,而且有些默認事件真的不太友好...廢話不多說,先上效果圖! 1.1 基本按鈕功能 1.2? 事件hover顯示 ? 1.3 事件添加、編輯、狀態(tài)修改? ? 1.4 日歷事件搜索? ? ?2.1 Fullcalendar日歷、el-popover彈窗

    2024年02月08日
    瀏覽(21)
  • 一個.Net強大的Excel控件,支持WinForm、WPF、Android【強烈推薦】

    一個.Net強大的Excel控件,支持WinForm、WPF、Android【強烈推薦】

    推薦一個強大的電子表單控件,使用簡單且功能強大。 這是一個開源的表格控制組件,支持Winform、WPF和Android平臺,可以方便的加載、修改和導出Excel文件,支持數(shù)據(jù)格式、大綱、公式計算、圖表、腳本執(zhí)行等、還支持觸摸滑動,可以方便地操作表格。 總的來說是一個可以快

    2024年02月07日
    瀏覽(30)
  • 【Android控件】HorizontalScrollView的基礎使用記錄(滾動條自定義)

    【Android控件】HorizontalScrollView的基礎使用記錄(滾動條自定義)

    目錄 ??????? 效果圖 簡介 注意事項 基礎屬性 滾動條全部設置 滾動條是否總顯示 自定義滾動條滑動背景和滾動條背景 設置滾動條的寬度 設置滾動條距離 其它常規(guī)設置 設置滾動速度 布局代碼示例 總結 HorizontalScrollView是水平滾動標簽。垂直滾動動是 ScrollView標簽 H

    2024年02月10日
    瀏覽(62)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包