2013-10-25 98 views
0

我已經使用this Android developers page上的代碼來創建時間選擇器,當按下按鈕時。但是,我沒有得到正確的看法。我將我的應用程序定位到API 18,最小值爲10,因爲我想支持2.3,因爲high usage。所需的最低SDK似乎對問題沒有影響(我將它設置爲16):安卓時間選擇器

我正在使用Android 4.1.2 API 16調試我的HTC One S上的應用程序。我得到這種類型的的時間選擇器,但我希望它看起來很現代,就像之前鏈接的Android開發者頁面一樣。

http://www.b2creativedesigns.com/Tutorials/TimePicker/tutorial_timepicker2.png

它爲什麼會用這個史前找時間選擇器?

我使用以下片段創建對話框。我從FragmentActivity調用它。

DialogFragment newFragment = TimePickerFragment.newInstance(2); 
newFragment.show(getSupportFragmentManager(), "endtime"); 

這是TimePickerFragment的編碼。

public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 
    private static int id; 

    public static TimePickerFragment newInstance(int _id) { 
     Bundle args = new Bundle(); 
     args.putInt("id", _id); 

     id = _id; 

     TimePickerFragment f = new TimePickerFragment(); 
     f.setArguments(args); 

     return f; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     id = getArguments().getInt("id"); 

     int hour = start/60; // start is a global variable, no problems in these 
     int minute = start % 60; 

     if(id == 2) { 
      hour = end/60; 
      minute = end % 60; 
     } 

     return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
    } 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     System.out.println(hourOfDay + ":" + minute); 
     setTime(id, hourOfDay, minute); 
    } 

} 
+4

可能是因爲您似乎在使用非全息活動主題。 –

+1

它可能是HTC的TimePicker用戶界面..嘗試在模擬器中運行應用程序,看看會發生什麼...... – d3m0li5h3r

+0

@ A - CI已經使用http://jgilfelt.github.io/android-actionbarstylegenerator/生成一些簡單的主題爲我的應用程序。我的應用程序主題設置爲清單文件中的自定義主題,但主題的父項設置爲'@android:style/Theme.Holo.Light'。 – MikkoP

回答

2

使用ContextThemeWrapper,明確規定:您的基於全息主題爲Dialog,例如

return new TimePickerDialog(
     new ContextThemeWrapper(getActivity(), R.style.YourAppStyleInheritingFromHolo), 
     this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
+0

太棒了!我會盡快給你賞金! – MikkoP

3

您需要使用Holo主題Holo小部件才能在您的應用中工作。例如:

在你的清單,正在申請:

android:theme="@style/AppTheme" 

,並在您的RES /值文件夾:

<style name="AppBaseTheme" parent="android:Theme.Light.NoTitleBar"> 
</style> 
而在價值觀-V11和值-V14採用這種

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar"> 
</style> 

系統將在Theme.Light和Theme.Holo.Light之間切換,具體取決於Android上的Android版本裝置。

+0

AppBaseTheme的父母設置爲我自己的主題,其中父母是android:Theme.Holo.Light – MikkoP

+0

我剛剛在運行4.1的Galaxy S3和運行4.2的HTC One上進行了測試,兩者均顯示Holo Time Picker。你的應用的其他部分是否也看起來很老? – 2Dee

+0

其他部分看起來應該是這樣。我還沒有嘗試在模擬器上進行調試,爲什麼我的真實設備不好? – MikkoP