2013-03-27 140 views
0

我使用Android 2.2手機創建了一個應用程序。我在活動中有四個切換按鈕。我在運行Android 4.2的平板電腦上查看了我的應用程序,並且指示燈不在按鈕的底部。Android 4.2無法正確顯示切換按鈕

incorrectly displayed toggle

我首先想到的是它可能會被截斷,所以我所做的按鈕高度200dp,但是指示燈仍然不存在。
我也在以編程方式調整寬度,但評論它沒有幫助。
切換屏幕在運行Android 2.2的手機上正確顯示。

這裏是一個按鈕的XML:

<ToggleButton 
    android:id="@+id/cat_btn1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView3" 
    android:layout_alignParentLeft="true" 
    android:textSize="12dp" 
    android:onClick="toggleClicked" 
    android:layout_marginLeft="10dp" /> 

我決定創建API 17的另一個項目,有一個單一的切換按鈕,它正確地顯示,所以我不知道是什麼原因造成的問題在我的第一個項目。

第二個項目形象和XML:使用自定義主題時

correctly displayed toggle

<ToggleButton 
    android:id="@+id/toggleButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="56dp" 
    android:layout_toRightOf="@+id/textView1" 
    android:text="ToggleButton" /> 
+0

我會在'ToggleButton'上擺脫'onClick' - 請使用'setOnCheckedChangedListener()'來響應'ToggleButton'狀態的變化。此外,您的第一個項目是否使用可能會干擾「ToggleButton」樣式的自定義主題? – CommonsWare 2013-03-27 14:01:08

+0

我只是使用'Theme.Black.NoTitleBar'。是使用所有按鈕上推薦的監聽器,還是隻是切換? 「 – Ryan 2013-03-27 14:02:36

+0

」正在使用所有按鈕上推薦的偵聽器,或者只是切換?「 - 」ToggleButton「處理它自己的點擊事件,就像」CompoundButton「的所有子類一樣,因此使用'setOnCheckedChangedListener()'。 – CommonsWare 2013-03-27 14:04:06

回答

2

要小心。在很多情況下,您需要根據API級別從適當的父主題繼承,以獲得所需的外觀。

通過Eclipse的活動創建一個現代化項目將設立風格的資源爲你鼓勵這樣的:

  • res/values/styles.xml定義AppBaseTheme,從-API前的水平11主題繼承(例如,Theme.Light

  • res/values-v11/styles.xml覆蓋AppBaseThemeHolo主題繼承(例如,Theme.Holo.Light

  • res/values-v14/styles.xml可能存在再次重寫AppBaseTheme(例如,Theme.Holo.Light.DarkActionBar

  • res/values/styles.xml也有AppTheme,定義爲從AppBaseTheme,你在你的清單和這樣對於應用的主題(或活動的主題)引用AppTheme繼承

AppTheme中放置應在任何API級別上工作的自定義設置。在適當的AppBaseTheme中放入API級別特定的自定義。並且,如果您想要改變一般外觀(例如,切換到黑暗/無動作欄),請改變AppBaseTheme繼承的主題以適合使用適合該API級別的主題。