• 自定义控件——改造已有的控件——自定义月份选择器


    // 由日期选择器派生出月份选择器
    public class MonthPicker extends DatePicker {
        public MonthPicker(Context context, AttributeSet attrs) {
            super(context, attrs);
            // 获取年月日的下拉列表项
            ViewGroup vg = ((ViewGroup) ((ViewGroup) getChildAt(0)).getChildAt(0));
            if (vg.getChildCount() == 3) {  // 拥有三个下级视图
                // 有的机型显示格式为“年月日”,此时隐藏第三个控件
                vg.getChildAt(2).setVisibility(View.GONE);
            } else if (vg.getChildCount() == 5) {  // 拥有五个下级视图
                // 有的机型显示格式为“年|月|日”,此时隐藏第四个和第五个控件(即“|日”)
                vg.getChildAt(3).setVisibility(View.GONE);
                vg.getChildAt(4).setVisibility(View.GONE);
            }
        }
    }

    ======================================================================================

    布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="5dp">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="请选择月份"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <!-- 自定义的月份选择器,需要使用全路径 -->
        <com.example.myapplication.widget.MonthPicker
            android:id="@+id/mp_month"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:calendarViewShown="false"
            android:datePickerMode="spinner"
            android:gravity="center" />
    
        <Button
            android:id="@+id/btn_ok"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="确  定"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <TextView
            android:id="@+id/tv_month"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
    </LinearLayout>

    代码:

    package com.example.myapplication;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    import com.example.myapplication.widget.MonthPicker;
    
    public class MainActivity extends AppCompatActivity  implements View.OnClickListener
    {
    
        private TextView tv_month;
        private MonthPicker mp_month; // 声明一个月份选择器对象
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            tv_month = findViewById(R.id.tv_month);
    
            // 从布局文件中获取名叫mp_month的月份选择器
            mp_month = findViewById(R.id.mp_month);
    
            findViewById(R.id.btn_ok).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v)
        {
    
            if (v.getId() == R.id.btn_ok)
            {
    
                // 获取月份选择器mp_month设定的年月
                String desc = String.format("您选择的月份是%d年%d月", mp_month.getYear(), mp_month.getMonth() + 1);
                tv_month.setText(desc);
            }
        }
    
    }

     

    MonthPicker
    package com.example.myapplication.widget;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.DatePicker;
    
    // 由日期选择器派生出月份选择器
    public class MonthPicker extends DatePicker
    {
        public MonthPicker(Context context, AttributeSet attrs)
        {
            super(context, attrs);
    
            // 获取年月日的下拉列表项
            ViewGroup vg = ((ViewGroup) ((ViewGroup) getChildAt(0)).getChildAt(0));
    
            if (vg.getChildCount() == 3)
            {
    
                // 有的机型显示格式为“年月日”,此时隐藏第三个控件
                vg.getChildAt(2).setVisibility(View.GONE);
            }
            else if (vg.getChildCount() == 5)
            {
    
                // 有的机型显示格式为“年|月|日”,此时隐藏第四个和第五个控件(即“|日”)
                vg.getChildAt(3).setVisibility(View.GONE);
                vg.getChildAt(4).setVisibility(View.GONE);
            }
        }
    }

     

  • 相关阅读:
    Solutions:Elastic SIEM
    Solutions:Elastic SIEM
    Solutions:Elastic SIEM
    Elasticsearch:设置Elastic账户安全
    Beats:通过Metricbeat实现外部对Elastic Stack的监控
    Kibana: 运用Data Visualizer来分析CSV数据
    Kibana:在Kibana中对数据进行深入分析
    Kibana:Canvas入门
    Elastic:创建你的第一个Elastic alert
    Elasticsearch:跨集群搜索 Cross-cluster search (CCS)
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16652634.html
Copyright © 2020-2023  润新知