仿酒店入住日期选择器
生活随笔
收集整理的這篇文章主要介紹了
仿酒店入住日期选择器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近公司要做個(gè)類(lèi)似于酒店入住日期的選擇器,就在網(wǎng)上找了一下,沒(méi)有找到滿(mǎn)足需求的,就在網(wǎng)上找個(gè)接近的改了一下,由于當(dāng)初比較忙,忘記是參考那位大神的了,如果有知道的可以留言
首先先貼上demo的圖片
?
一:DateBean
import java.util.Date;public class DateBean {//item類(lèi)型public static int item_type_day = 1;//日期itempublic static int item_type_month = 2;//月份itemint itemType = 1;//默認(rèn)是日期item//item狀態(tài)public static int ITEM_STATE_BEGIN_DATE = 1;//開(kāi)始日期public static int ITEM_STATE_END_DATE = 2;//結(jié)束日期public static int ITEM_STATE_SELECTED = 3;//選中狀態(tài)public static int ITEM_STATE_NORMAL = 4;//正常狀態(tài)public int itemState = ITEM_STATE_NORMAL;Date date;//具體日期String day;//一個(gè)月的某天String monthStr;//月份public int getItemState() {return itemState;}public void setItemState(int itemState) {this.itemState = itemState;}public int getItemType() {return itemType;}public void setItemType(int itemType) {this.itemType = itemType;}public String getMonthStr() {return monthStr;}public void setMonthStr(String monthStr) {this.monthStr = monthStr;}public static int getItem_type_month() {return item_type_month;}public static void setItem_type_month(int item_type_month) {DateBean.item_type_month = item_type_month;}public static int getItem_type_day() {return item_type_day;}public static void setItem_type_day(int item_type_day) {DateBean.item_type_day = item_type_day;}public String getDay() {return day;}public void setDay(String day) {this.day = day;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;} }二:MyItemD
import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View;public class MyItemD extends RecyclerView.ItemDecoration {Paint paint=new Paint();Paint colorPaint=new Paint();Paint linePaint=new Paint();public MyItemD(){paint.setColor(Color.parseColor("#ffffff"));paint.setStyle(Paint.Style.FILL);colorPaint.setColor(Color.parseColor("#ff6600"));colorPaint.setAntiAlias(true);linePaint.setAntiAlias(true);linePaint.setColor(Color.parseColor("#dddddd"));}@Overridepublic void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {super.onDrawOver(c, parent, state);if(parent.getChildCount()<=0){return;}//頭部的高度int height=50;final float scale = parent.getContext().getResources().getDisplayMetrics().density;height= (int) (height*scale+0.5f);//獲取第一個(gè)可見(jiàn)的view,通過(guò)此view獲取其對(duì)應(yīng)的月份CalendarList.CalendarAdapter a=(CalendarList.CalendarAdapter) parent.getAdapter();View fistView=parent.getChildAt(0);String text=a.data.get(parent.getChildAdapterPosition(fistView)).getMonthStr();String fistMonthStr="";int fistViewTop=0;//查找當(dāng)前可見(jiàn)的itemView中第一個(gè)月份類(lèi)型的itemfor(int i=0;i<parent.getChildCount();i++){View v=parent.getChildAt(i);if(2==parent.getChildViewHolder(v).getItemViewType()){fistMonthStr=a.data.get(parent.getChildAdapterPosition(v)).getMonthStr();fistViewTop=v.getTop();break;}}//計(jì)算偏移量int topOffset=0;if(!fistMonthStr.equals(text)&&fistViewTop<height){//前提是第一個(gè)可見(jiàn)的月份item不是當(dāng)前顯示的月份和距離的頂部的距離小于頭部的高度topOffset=height-fistViewTop;}int t=0-topOffset;//繪制頭部區(qū)域c.drawRect(parent.getLeft(),t,parent.getRight(),t+height,paint);colorPaint.setTextAlign(Paint.Align.CENTER);colorPaint.setTextSize(15*scale+0.5f);//繪制頭部月份文字c.drawText(text,parent.getRight()/2,(t+height)/2,colorPaint);//繪制分割線(xiàn) // if(fistViewTop!=height) { // linePaint.setStrokeWidth(scale * 0.5f + 0.5f); // c.drawLine(parent.getLeft(), t + height, parent.getRight(), t + height, linePaint); // }}}三:CalendarList
import android.content.Context; import android.graphics.Color; import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView;import com.frank.frank.testlist.R;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List;public class CalendarList extends FrameLayout {private static final String TAG = CalendarListActivity.class.getSimpleName() + "_LOG";RecyclerView recyclerView;CalendarAdapter adapter;private DateBean startDate;//開(kāi)始時(shí)間private DateBean endDate;//結(jié)束時(shí)間OnDateSelected onDateSelected;//選中監(jiān)聽(tīng)onStart onDateStart;//獲取開(kāi)始時(shí)間SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");public CalendarList(Context context) {super(context);init(context);}public CalendarList(Context context,AttributeSet attrs) {super(context, attrs);init(context);}public CalendarList(Context context,AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init(context);}private void init(Context context) {addView(LayoutInflater.from(context).inflate(R.layout.item_calendar, this, false));recyclerView = findViewById(R.id.recyclerView);adapter = new CalendarAdapter();GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 7);gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {@Overridepublic int getSpanSize(int i) {if (DateBean.item_type_month == adapter.data.get(i).getItemType()) {return 7;} else {return 1;}}});recyclerView.setLayoutManager(gridLayoutManager);recyclerView.setAdapter(adapter);List<DateBean> days = days("", "");SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");String format = simpleDateFormat.format(new Date());//跳轉(zhuǎn)到當(dāng)前月份顯示,由于目前是2019/03,大概在22058左右,我就從22000開(kāi)始查找,減少循環(huán)for (int i = 22000; i < days.size(); i++) {String monthStr = days.get(i).getMonthStr();if(monthStr.equals(format)){recyclerView.scrollToPosition(i);break;}}adapter.data.addAll(days);// DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(this,DividerItemDecoration.VERTICAL); // dividerItemDecoration.setDrawable(ContextCompat.getDrawable(this,R.drawable.shape)); // recyclerView.addItemDecoration(dividerItemDecoration);MyItemD myItemD = new MyItemD();recyclerView.addItemDecoration(myItemD);adapter.setOnRecyclerviewItemClick(new CalendarAdapter.OnRecyclerviewItemClick() {@Overridepublic void onItemClick(View v, int position) {onClick(adapter.data.get(position));}});}private void onClick(DateBean dateBean) {if (dateBean.getItemType() == DateBean.item_type_month || TextUtils.isEmpty(dateBean.getDay())) {return;}//如果沒(méi)有選中開(kāi)始日期則此次操作選中開(kāi)始日期if (startDate == null) {startDate = dateBean;dateBean.setItemState(DateBean.ITEM_STATE_BEGIN_DATE);onDateStart.selectedStart(simpleDateFormat.format(startDate.getDate()));} else if (endDate == null) {//如果選中了開(kāi)始日期但沒(méi)有選中結(jié)束日期,本次操作選中結(jié)束日期//如果當(dāng)前點(diǎn)擊的結(jié)束日期跟開(kāi)始日期一致 則不做操作if (startDate == dateBean) {onDateStart.selectedStart(simpleDateFormat.format(startDate.getDate()));} else if (dateBean.getDate().getTime() < startDate.getDate().getTime()) {//當(dāng)前點(diǎn)選的日期小于當(dāng)前選中的開(kāi)始日期 則本次操作重新選中開(kāi)始日期startDate.setItemState(DateBean.ITEM_STATE_NORMAL);startDate = dateBean;startDate.setItemState(DateBean.ITEM_STATE_BEGIN_DATE);onDateStart.selectedStart(simpleDateFormat.format(startDate.getDate()));} else {//選中結(jié)束日期endDate = dateBean;endDate.setItemState(DateBean.ITEM_STATE_END_DATE);setState();if(onDateSelected!=null){onDateSelected.selected(simpleDateFormat.format(startDate.getDate()),simpleDateFormat.format(endDate.getDate()));}}} else if (startDate != null && endDate != null) {//結(jié)束日期和開(kāi)始日期都已選中clearState();//重新選擇開(kāi)始日期,結(jié)束日期清除startDate.setItemState(DateBean.ITEM_STATE_NORMAL);startDate = dateBean;startDate.setItemState(DateBean.ITEM_STATE_BEGIN_DATE);endDate.setItemState(DateBean.ITEM_STATE_NORMAL);endDate = null;onDateStart.selectedStart(simpleDateFormat.format(startDate.getDate()));}adapter.notifyDataSetChanged();}//選中中間的日期private void setState() {if (endDate != null && startDate != null) {int start = adapter.data.indexOf(startDate);start += 1;int end = adapter.data.indexOf(endDate);for (; start < end; start++) {DateBean dateBean = adapter.data.get(start);if (!TextUtils.isEmpty(dateBean.getDay())) {dateBean.setItemState(DateBean.ITEM_STATE_SELECTED);}}}}//取消選中狀態(tài)private void clearState() {if (endDate != null && startDate != null) {int start = adapter.data.indexOf(startDate);start += 1;int end = adapter.data.indexOf(endDate);for (; start < end; start++) {DateBean dateBean = adapter.data.get(start);dateBean.setItemState(DateBean.ITEM_STATE_NORMAL);}}}//日歷adapterpublic static class CalendarAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {ArrayList<DateBean> data = new ArrayList<>();private CalendarAdapter.OnRecyclerviewItemClick onRecyclerviewItemClick;public CalendarAdapter.OnRecyclerviewItemClick getOnRecyclerviewItemClick() {return onRecyclerviewItemClick;}public void setOnRecyclerviewItemClick(CalendarAdapter.OnRecyclerviewItemClick onRecyclerviewItemClick) {this.onRecyclerviewItemClick = onRecyclerviewItemClick;}@Overridepublic int getItemCount() {return data.size();}@NonNull@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {if (i == DateBean.item_type_day) {View rootView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_day, viewGroup, false);final CalendarAdapter.DayViewHolder dayViewHolder = new CalendarAdapter.DayViewHolder(rootView);dayViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (onRecyclerviewItemClick != null) {onRecyclerviewItemClick.onItemClick(v, dayViewHolder.getLayoutPosition());}}});return dayViewHolder;} else if (i == DateBean.item_type_month) {View rootView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_month, viewGroup, false);final CalendarAdapter.MonthViewHolder monthViewHolder = new CalendarAdapter.MonthViewHolder(rootView);monthViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (onRecyclerviewItemClick != null) {onRecyclerviewItemClick.onItemClick(v, monthViewHolder.getLayoutPosition());}}});return monthViewHolder;}return null;}@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {if (viewHolder instanceof CalendarAdapter.MonthViewHolder) {((CalendarAdapter.MonthViewHolder) viewHolder).tv_month.setText(data.get(i).getMonthStr());} else {CalendarAdapter.DayViewHolder vh = ((CalendarAdapter.DayViewHolder) viewHolder);vh.tv_day.setText(data.get(i).getDay());vh.tv_check_in_check_out.setVisibility(View.GONE);DateBean dateBean = data.get(i);//設(shè)置item狀態(tài)if (dateBean.getItemState() == DateBean.ITEM_STATE_BEGIN_DATE || dateBean.getItemState() == DateBean.ITEM_STATE_END_DATE) {//開(kāi)始日期或結(jié)束日期vh.itemView.setBackgroundColor(Color.parseColor("#ff6600"));vh.tv_day.setTextColor(Color.WHITE);vh.tv_check_in_check_out.setVisibility(View.VISIBLE);if (dateBean.getItemState() == DateBean.ITEM_STATE_END_DATE) {vh.tv_check_in_check_out.setText("結(jié)束");} else {vh.tv_check_in_check_out.setText("開(kāi)始");}} else if (dateBean.getItemState() == DateBean.ITEM_STATE_SELECTED) {//選中狀態(tài)vh.itemView.setBackgroundColor(Color.parseColor("#ffa500"));vh.tv_day.setTextColor(Color.WHITE);} else {//正常狀態(tài)vh.itemView.setBackgroundColor(Color.WHITE);vh.tv_day.setTextColor(Color.BLACK);}}}@Overridepublic int getItemViewType(int position) {return data.get(position).getItemType();}public class DayViewHolder extends RecyclerView.ViewHolder {public TextView tv_day;public TextView tv_check_in_check_out;public DayViewHolder(@NonNull View itemView) {super(itemView);tv_day = itemView.findViewById(R.id.tv_day);tv_check_in_check_out = itemView.findViewById(R.id.tv_check_in_check_out);}}public class MonthViewHolder extends RecyclerView.ViewHolder {public TextView tv_month;public MonthViewHolder(@NonNull View itemView) {super(itemView);tv_month = itemView.findViewById(R.id.tv_month);}}public interface OnRecyclerviewItemClick {void onItemClick(View v, int position);}}/*** 生成日歷數(shù)據(jù)*/private List<DateBean> days(String sDate, String eDate) {List<DateBean> dateBeans = new ArrayList<>();try {Calendar calendar = Calendar.getInstance();//日期格式化SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat formatYYYYMM = new SimpleDateFormat("yyyy-MM");//起始日期//起始日期從1970/01/01Date startDate = new Date(70,0,1);calendar.setTime(startDate);//結(jié)束日期加了1200個(gè)月也就是100年到2070年calendar.add(Calendar.MONTH, 1200);Date endDate = new Date(calendar.getTimeInMillis());Log.d(TAG, "startDate:" + format.format(startDate) + "----------endDate:" + format.format(endDate));//格式化開(kāi)始日期和結(jié)束日期為 yyyy-mm-dd格式String endDateStr = format.format(endDate);endDate = format.parse(endDateStr);String startDateStr = format.format(startDate);startDate = format.parse(startDateStr);calendar.setTime(startDate);Log.d(TAG, "startDateStr:" + startDateStr + "---------endDate:" + format.format(endDate));Log.d(TAG, "endDateStr:" + endDateStr + "---------endDate:" + format.format(endDate));calendar.set(Calendar.DAY_OF_MONTH, 1);Calendar monthCalendar = Calendar.getInstance();//按月生成日歷 每行7個(gè) 最多6行 42個(gè)//每一行有七個(gè)日期 日 一 二 三 四 五 六 的順序for (; calendar.getTimeInMillis() <= endDate.getTime(); ) {//月份itemDateBean monthDateBean = new DateBean();monthDateBean.setDate(calendar.getTime());monthDateBean.setMonthStr(formatYYYYMM.format(monthDateBean.getDate()));monthDateBean.setItemType(DateBean.item_type_month);dateBeans.add(monthDateBean);//獲取一個(gè)月結(jié)束的日期和開(kāi)始日期monthCalendar.setTime(calendar.getTime());monthCalendar.set(Calendar.DAY_OF_MONTH, 1);Date startMonthDay = calendar.getTime();monthCalendar.add(Calendar.MONTH, 1);monthCalendar.add(Calendar.DAY_OF_MONTH, -1);Date endMonthDay = monthCalendar.getTime();//重置為本月開(kāi)始monthCalendar.set(Calendar.DAY_OF_MONTH, 1);Log.d(TAG, "月份的開(kāi)始日期:" + format.format(startMonthDay) + "---------結(jié)束日期:" + format.format(endMonthDay));for (; monthCalendar.getTimeInMillis() <= endMonthDay.getTime(); ) {//生成單個(gè)月的日歷//處理一個(gè)月開(kāi)始的第一天if (monthCalendar.get(Calendar.DAY_OF_MONTH) == 1) {//看某個(gè)月第一天是周幾int weekDay = monthCalendar.get(Calendar.DAY_OF_WEEK);switch (weekDay) {case 1://周日break;case 2://周一addDatePlaceholder(dateBeans, 1, monthDateBean.getMonthStr());break;case 3://周二addDatePlaceholder(dateBeans, 2, monthDateBean.getMonthStr());break;case 4://周三addDatePlaceholder(dateBeans, 3, monthDateBean.getMonthStr());break;case 5://周四addDatePlaceholder(dateBeans, 4, monthDateBean.getMonthStr());break;case 6:addDatePlaceholder(dateBeans, 5, monthDateBean.getMonthStr());//周五break;case 7:addDatePlaceholder(dateBeans, 6, monthDateBean.getMonthStr());//周六break;}}//生成某一天日期實(shí)體 日itemDateBean dateBean = new DateBean();dateBean.setDate(monthCalendar.getTime());dateBean.setDay(monthCalendar.get(Calendar.DAY_OF_MONTH) + "");dateBean.setMonthStr(monthDateBean.getMonthStr());dateBeans.add(dateBean);//處理一個(gè)月的最后一天if (monthCalendar.getTimeInMillis() == endMonthDay.getTime()) {//看某個(gè)月第一天是周幾int weekDay = monthCalendar.get(Calendar.DAY_OF_WEEK);switch (weekDay) {case 1://周日addDatePlaceholder(dateBeans, 6, monthDateBean.getMonthStr());break;case 2://周一addDatePlaceholder(dateBeans, 5, monthDateBean.getMonthStr());break;case 3://周二addDatePlaceholder(dateBeans, 4, monthDateBean.getMonthStr());break;case 4://周三addDatePlaceholder(dateBeans, 3, monthDateBean.getMonthStr());break;case 5://周四addDatePlaceholder(dateBeans, 2, monthDateBean.getMonthStr());break;case 6:addDatePlaceholder(dateBeans, 1, monthDateBean.getMonthStr());//周5break;}}//天數(shù)加1monthCalendar.add(Calendar.DAY_OF_MONTH, 1);}Log.d(TAG, "日期" + format.format(calendar.getTime()) + "----周幾" + getWeekStr(calendar.get(Calendar.DAY_OF_WEEK) + ""));//月份加1calendar.add(Calendar.MONTH, 1);}} catch (Exception ex) {}return dateBeans;}//添加空的日期占位private void addDatePlaceholder(List<DateBean> dateBeans, int count, String monthStr) {for (int i = 0; i < count; i++) {DateBean dateBean = new DateBean();dateBean.setMonthStr(monthStr);dateBeans.add(dateBean);}}private String getWeekStr(String mWay) {if ("1".equals(mWay)) {mWay = "天";} else if ("2".equals(mWay)) {mWay = "一";} else if ("3".equals(mWay)) {mWay = "二";} else if ("4".equals(mWay)) {mWay = "三";} else if ("5".equals(mWay)) {mWay = "四";} else if ("6".equals(mWay)) {mWay = "五";} else if ("7".equals(mWay)) {mWay = "六";}return mWay;}public interface OnDateSelected{void selected(String startDate,String endDate);}public void setOnDateSelected(OnDateSelected onDateSelected) {this.onDateSelected = onDateSelected;}public interface onStart{void selectedStart(String startDate);}public void setOnDataStart(onStart onStart){this.onDateStart=onStart;} }四:activity
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import android.widget.Toast;import com.frank.frank.testlist.R;public class CalendarListActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_calendar_list);CalendarList calendarList=findViewById(R.id.calendarList);final TextView startTime=findViewById(R.id.start_time);final TextView endTime=findViewById(R.id.end_time);calendarList.setOnDateSelected(new CalendarList.OnDateSelected() {@Overridepublic void selected(String startDate, String endDate) {//Toast.makeText(getApplicationContext(),"s:"+startDate+"e:"+endDate,Toast.LENGTH_LONG).show();//startTime.setText("開(kāi)始時(shí)間:"+startDate);endTime.setText("結(jié)束時(shí)間:"+endDate);}});calendarList.setOnDataStart(new CalendarList.onStart() {@Overridepublic void selectedStart(String startDate) {//Toast.makeText(getApplicationContext(),"s:"+startDate,Toast.LENGTH_LONG).show();startTime.setText("開(kāi)始時(shí)間:"+startDate);endTime.setText("");}});} }五:布局
? 1:item_calendar
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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="match_parent"android:orientation="vertical"tools:context=".MainActivity"><LinearLayoutandroid:orientation="horizontal"android:background="#F2F2F2"android:gravity="center_vertical"android:layout_width="match_parent"android:paddingTop="10dp"android:paddingBottom="10dp"android:layout_height="wrap_content"><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="日"android:textColor="#ff6600"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="一"android:textColor="#666"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="二"android:textColor="#666"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="三"android:textColor="#666"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="四"android:textColor="#666"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="五"android:gravity="center"android:layout_height="wrap_content" /><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:text="六"android:textColor="#ff6600"android:gravity="center"android:layout_height="wrap_content" /></LinearLayout><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></LinearLayout>? 2:item_day
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="#ffffff"android:layout_height="50dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><TextViewandroid:id="@+id/tv_day"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:gravity="center"android:text="1"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_check_in_check_out"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="2dp"android:gravity="center"android:text="開(kāi)始"android:textColor="#fff"android:textSize="12dp"android:visibility="gone" /></LinearLayout></RelativeLayout>? 3:item_month
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="#ffffff"android:layout_height="50dp"><TextViewandroid:id="@+id/tv_month"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:padding="5dp"android:text="8"android:textSize="15dp"android:textColor="#ff6600" /></android.support.constraint.ConstraintLayout>? 4:activity布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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="match_parent"android:orientation="vertical"tools:context="com.frank.frank.testlist.calendar.CalendarListActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/start_time"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/end_time"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content" /></LinearLayout><com.frank.frank.testlist.calendar.CalendarListandroid:id="@+id/calendarList"android:layout_width="match_parent"android:layout_height="match_parent"></com.frank.frank.testlist.calendar.CalendarList> </LinearLayout>總結(jié)
以上是生活随笔為你收集整理的仿酒店入住日期选择器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 适合视力障碍者的Linux
- 下一篇: ClickHouce 常用日期函数小示例