2016-11-04 79 views
2

如何设置timepicker中的最短时间(我没有使用TimePickerDialog)。我搜查了很多,但无法找到正确的答案。我使用TimePicker从用户处获得时间。这是我的XML代码如何在Android TimePicker中设置最短时间(不在TimePickerDialog中)

   <TimePicker 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="true" 
        android:headerBackground="@color/colorPrimary" 
        android:id="@+id/timePicker" /> 

这是我在我的代码

TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker); 

怎么弄现在我该怎么设置最短时间绑定用户不要选择过去的时间。

这就是我的时间选择器的样子....我没有使用TimePickerDialog,因为我们必须随时间显示不同的东西。谢谢!

enter image description here

回答

1

创建一个XML文件,并将其命名为activity_time_picker.xml

​​

现在创建活动课这样

import java.lang.reflect.Field; 
import java.util.ArrayList; 
import java.util.List; 

import android.annotation.SuppressLint; 

import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.NumberPicker; 
import android.widget.TimePicker; 

public class TimePickerActivity extends Activity { 


    TimePicker timePicker; 
    private int TIME_PICKER_INTERVAL = 15; 
    NumberPicker minutePicker; 
    List<String> displayedValues; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     setContentView(R.layout.activity_time_picker); 
     super.onCreate(savedInstanceState); 
     timePicker = (TimePicker)findViewById(R.id.timePicker1); 

     timePicker.setIs24HourView(true); 
     timePicker.setCurrentHour(0); 
     timePicker.setCurrentMinute(0); 

     setTimePickerInterval(timePicker); 
    } 
@SuppressLint("NewApi") 
    private void setTimePickerInterval(TimePicker timePicker) { 
     try { 
       Class<?> classForid = Class.forName("com.android.internal.R$id"); 
       // Field timePickerField = classForid.getField("timePicker"); 

       Field field = classForid.getField("minute"); 
       minutePicker = (NumberPicker) timePicker 
         .findViewById(field.getInt(null)); 

       minutePicker.setMinValue(0); 
       minutePicker.setMaxValue(3); 
       displayedValues = new ArrayList<String>(); 
       for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) { 
        displayedValues.add(String.format("%02d", i)); 
       } 
       // for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) { 
       //  displayedValues.add(String.format("%02d", i)); 
       // } 
       minutePicker.setDisplayedValues(displayedValues 
         .toArray(new String[0])); 
       minutePicker.setWrapSelectorWheel(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 
} 
相关问题