【问题标题】:TimePicker + CheckBox时间选择器 + 复选框
【发布时间】:2013-06-13 16:15:01
【问题描述】:

我的应用程序中有一个TimePicker,我想在它上面添加一个CheckBox,如果它检查TimePicker 将不起作用。这是我的TimePickerhttp://developer.android.com/guide/topics/ui/controls/pickers.html#TimePicker

我该怎么做?我希望 timePicker 看起来与示例相同。

【问题讨论】:

    标签: android checkbox datetimepicker android-checkbox android-timepicker


    【解决方案1】:

    我会将整个项目放在这里,以供其他人在需要时使用: 简短描述:一个程序,可让您获取用户设置的时间并在您按下完成按钮后将其显示在页面底部。用于从一个活动到另一个活动的意图。

    --------主要活动--------

    package com.example.chxboxtest;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener {
    
    private Button start_intent_button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        start_intent_button = (Button) findViewById(R.id.start_intent_button);
        start_intent_button.setOnClickListener(this);
    
    }
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        case R.id.start_intent_button: {
    
            Intent intent = new Intent(this,TimePickerTest.class);
            startActivity(intent);
    
        }
            break;
        }
    
    }
    
    }
    

    -------------主活动 XML-----------------

    <RelativeLayout 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"
     >  
    
    <Button 
        android:id="@+id/start_intent_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Intent Time Picker"
        android:layout_centerInParent="true"
        />
    
    
    </RelativeLayout>
    

    -------------TimePicker 类 ---------------

      package com.example.chxboxtest;
    
     import android.app.Activity;
     import android.os.Bundle;
     import android.view.View;
     import android.view.View.OnClickListener;
     import android.widget.Button;
     import android.widget.CheckBox;
     import android.widget.TextView;
     import android.widget.TimePicker;
     import android.widget.Toast;
    
    
     public class TimePickerTest extends Activity implements OnClickListener{
    
    private CheckBox cBox;
    private TimePicker tPicker;
    private TextView showTime;
    private Button done;
    
    private String hour;
    private String minute;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.time_picker_layout);
    
        initButtons();
    }
    
    
    
    private void initButtons() {
    
        tPicker = (TimePicker) findViewById(R.id.time_picker);
        showTime = (TextView) findViewById(R.id.get_time);
        done = (Button)findViewById(R.id.done);
        cBox = (CheckBox) findViewById(R.id.time_picker_checkbox);
        cBox.setOnClickListener(this);
        done.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        //If check enable or disble timePicker
        case R.id.time_picker_checkbox: {
    
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(this, "CHECKED", Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(false);
            } else {
                Toast.makeText(this, "NOT CHECKED", Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(true);
            }
        }
            break;
    
    //If Done button pressed get time selected by user
    
        case R.id.done:{
    
    
            tPicker.clearFocus();
            // re-read the values, in my case i put them in a Time object.
            hour   = tPicker.getCurrentHour().toString();
            minute = tPicker.getCurrentMinute().toString();
    
            if(tPicker.getCurrentMinute().intValue() < 10){
    
                String setTimeText = hour+ " : " + "0" + minute;
                showTime.setText(setTimeText);
            }else{
                String setTimeText = hour+ " : " + minute;
                showTime.setText(setTimeText);
            }
    
    
    
    
    
        }
            break;
    
        default:
            break;
    
        }
    
    }
    
      }
    

    -------------TimerPicker XML------------

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView
        android:id="@+id/timer_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time_picker"
        android:layout_toRightOf="@+id/time_picker_checkbox"
        android:text="Check this to Cancel Alarm" />
    
    <CheckBox
        android:id="@+id/time_picker_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time_picker"
        android:layout_centerHorizontal="true" />
    
    <TimePicker
        android:id="@+id/time_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
    
    <Button
        android:id="@+id/done"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/time_picker"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:text="Done" />
    
    <TextView
        android:id="@+id/get_time"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:text="Time"
        android:textColor="#FF0000"
        android:textSize="25sp" />
    
     </RelativeLayout>
    

    -------------Manifest.xml------------

         **<activity
            android:name="com.example.chxboxtest.TimePickerTest"
            android:configChanges="orientation|keyboardHidden">
        </activity>**
    

    不要忘记将 TimePicker 类添加为活动。 BestPracice 在 strings.xml 中添加所有 xml 文本

    干杯

    【讨论】:

    • 对过去的时间感到抱歉,但最后一件事:你能告诉我如何将它添加到对话框中吗?谢谢!
    • 你还记得我吗?谢谢!!
    【解决方案2】:

    这是一个满足您所有要求的功能示例。 经过测试且 100% 正常运行 :)

    把这个放到xml中:

    <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
     >  
    
    
    <TextView
        android:id="@+id/timer_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Check this to Cancel Alarm"
        android:layout_above="@+id/time_picker"
        android:layout_toRightOf="@+id/time_picker_checkbox"
        />
    
    <CheckBox 
        android:id="@+id/time_picker_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time_picker"
        />
    
    <TimePicker 
        android:id="@+id/time_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        />
    

    这是你的java代码:

     package com.example.chxboxtest;
    
      import android.app.Activity;
      import android.os.Bundle;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.CheckBox;
      import android.widget.TimePicker;
      import android.widget.Toast;
    
      public class MainActivity extends Activity implements OnClickListener {
    
    private CheckBox cBox;
    private TimePicker tPicker;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        initButtons();
    
    }
    
    private void initButtons() {
    
        tPicker = (TimePicker) findViewById(R.id.time_picker);
    
        cBox = (CheckBox) findViewById(R.id.time_picker_checkbox);
        cBox.setOnClickListener(this);
    
    }
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        case R.id.time_picker_checkbox: {
    
            if (((CheckBox) v).isChecked()) {
    
          Toast.makeText(this, "Deactivate",Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(false);
            } else {
                Toast.makeText(this, "Activate",Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(true);
            }
    
        }
    
            break;
    
        default:
            break;
    
        }
    
    }
    
      }
    

    如果您想在自定义对话框中使用此示例,请告诉我。

    干杯,

    【讨论】:

    • 当你创建一个新项目时,该部分将由eclipse创建,你可以忽略这部分:) android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizo​​ntal_margin" android :paddingRight="@dimen/activity_horizo​​ntal_margin" android:paddingTop="@dimen/activity_vertical_margin"
    • 好的,我删除了这些行(它给了我错误)。当我尝试调用该 Activity 时出现错误:pastebin.com/27RLUwFT(我的调用方式是:startActivity(new Intent(this, TimePickerTest.class));)(我称你的班级为“TimePickerTest”)谢谢!
    • 您是否在 Manifest.xml 中添加了 TimePickerTest?我用你的程序创建了一个项目并添加了一个 Intent intent = new Intent(this,TimePickerTest.class);开始活动(意图);我会尝试将其发送给您或将其放在文件共享中,以便您可以下载整个项目:)
    • 我补充说,如果您尝试将整个项目发送给我,我想看看我的问题。谢谢!
    • 添加到文件共享项目中。您可以下载它并在此之后导入它,它将 100% 工作:) 干杯添加链接:fileshare.ro/e29618784
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2014-06-20
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多