0

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

我怎样才能做到这一点?我希望 timePicker 看起来与示例相同。

截屏

4

2 回答 2

2

我会将整个项目放在这里,以供其他人使用从一项活动到另一项活动的意图。

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

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 文本

干杯

于 2013-06-13T08:15:01.040 回答
1

这是一个满足您所有要求的功能示例。经过测试且 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;

    }

}

  }

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

干杯,

于 2013-06-10T10:55:24.500 回答