如何自定义时间戳仅在没有(上午/下午和分钟)API 19的情况下显示/设置小时1-12并禁用听众

时间:2015-09-24 08:40:11

标签: java android android-timepicker

我想使用TimePicker来显示医学现象在人体背景下的位置。

示例:A人7点钟右脚受伤。 (对于右脚内侧的图片)

为此,我想使用一个使用时钟显示的TimePicker,只启用1-12小时,并禁用上午/下午选择器和分钟选择器。

第二个问题我需要使用API​​ 19,它不支持set / get hours / minutes。 (看到测试时,由于API 23 req,不知道是否会影响更多来自timepicker的方法。)

为了测试这个,我在一个示例项目中添加了一个时间选择器:

activity_main.xml

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<TableRow
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="horizontal">
        <EditText
            android:id ="@+id/edit_Message"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="@string/edit_message"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_send"
            android:onClick="sendMessage"/>
    </LinearLayout>
</TableRow>
<TableRow>
    <LinearLayout>
        <TimePicker
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/timePicker"
            android:layout_column="1"
            android:timePickerMode="clock" />
    </LinearLayout>
</TableRow>
</TableLayout>

上面的时间选择器有小时,分钟和上午/下午拾取器,还有一个数字和径向时钟来直接选择时间(无轮)。这已经是我想要的形式了。

对于选择时间,我可以通过单击数字时钟或单击径向时钟(从小时数设置小时数到分钟数,将切换时钟从1-12切换到00 - 55)从小时切换到数分钟。 。)

我想禁用点击径向时钟(小时 - >分钟)的切换,并禁用数字时钟上的分钟部分。

http://developer.android.com/reference/android/widget/TimePicker.html下,我没有找到任何有用的信息,可以指出我的解决方案。

所以我通过调试器查看了timepicker并访问了&#34;组件&#34;时间戳的个人化。

来自 MainActivity.java

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TimePicker picker = (TimePicker) findViewById(R.id.timePicker);
    picker.setIs24HourView(false);
    LinearLayout pickerLL = (LinearLayout) picker.getChildAt(0); //only child of timepicker
    RelativeLayout digitalRL = (RelativeLayout) pickerLL.getChildAt(0); //child 0 is digital clock, child 1 is radial clock
    AppCompatTextView minutesTV = (AppCompatTextView) digitalRL.getChildAt(2); //TextView of minutes
    minutesTV.setClickable(false);
    //minutesTV.setVisibility(View.GONE);
    LinearLayout ampmLL = (LinearLayout) digitalRL.getChildAt(3); // Layout of the am / pm picker
    ampmLL.setVisibility(View.GONE);

    picker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
        @Override
        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            //Put the change for timepicker hour here
        }
    });

}

所以我能够让分钟无法点击,而且/ pm picker invisibil(已经消失)。

如何找到将径向时钟从几小时切换到几分钟的监听器?

0 个答案:

没有答案