这种错误就像一个黑魔法:
我正在尝试移植https://github.com/SimonVT/android-timepicker以完成Holo样式(默认情况下,它只有ICS timepicker小部件,对话框仍然是Honeycomb之前)。
我使用timepicker的特殊属性扩展了Theme.Sherlock,然后将其应用于整个应用程序。对话框看起来与默认情况相同(如上所述)。之后我就把HoloEverywhere lib添加到项目中...... BLACK魔法出现了! Timepicker小部件以某种方式丢失了一些像蓝线和在对话框中改变位置的视图。我仍然想知道这个故障的原因。
注意:在我的项目(代码)以及TimePicker lib中,我对HoloEverywhere一无所知
注意:我还更改了timepicker中的一些属性,因为它们与HoloEverywhere的属性冲突(因为“...属性已被声明”错误)
代码:
public class DialogSample extends SherlockFragmentActivity implements OnTimeSetListener {
private TextView mTimeDisplay;
private int mHour;
private int mMinute;
static final int TIME_DIALOG_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
findViewById(R.id.btnDialog).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
}
});
updateDisplay();
}
// updates the time we display in the TextView
private void updateDisplay() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mHour)).append(":")
.append(pad(mMinute)));
}
private static String pad(int c) {
if (c >= 10) {
return String.valueOf(c);
} else {
return "0" + String.valueOf(c);
}
}
static public class TimePickerFragment extends SherlockDialogFragment {
@Override
public TimePickerDialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getSherlockActivity(), (DialogSample)getSherlockActivity(), hour, minute, true);
}
public TimePickerFragment() {
}
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
}
}
答案 0 :(得分:0)
如果我理解正确,你需要holo风格的时间选择器和数字选择器。您可以使用不需要SimonVT的holoeverywhere组件
答案 1 :(得分:0)
解决方案很棘手:我将HoloEverywhere添加到了
1)NumberPicker lib 2)TimePicker lib 3)TimePicker对话框lib 4)到我的项目
但我仍然对此不满意,因为解决方案与问题不一样