0

我使用我的 Android 2.2 手机创建了一个应用程序。我在一个活动中有四个切换按钮。我在运行 Android 4.2 的平板电脑上查看了我的应用程序,但指示灯不在按钮底部。

显示不正确的切换

我首先认为它可能会被切断,所以我设置了按钮 height 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:

正确显示切换

<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" />
4

1 回答 1

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在清单中引用的位置以及应用程序主题(或活动主题)的位置

将应该适用于任何 API 级别的自定义设置放在AppTheme. 将特定于 API 级别的自定义设置放在适当的AppBaseTheme. 而且,如果您想更改总体外观(例如,切换到深色/无操作栏),请AppBaseTheme使用适合该 API 级别的主题更改继承自的主题。

于 2013-03-27T15:08:43.297 回答