Android 4.2无法正确显示切换按钮

Android 4.2无法正确显示切换按钮,android,android-layout,Android,Android Layout,我用我的安卓2.2手机创建了一个应用程序。我在一个活动中有四个切换按钮。我在运行安卓4.2的平板电脑上查看了我的应用程序,但指示灯不在按钮底部 我首先想到它可能被切断了,所以我设置了按钮高度200dp,但指示器仍然不在那里。 我还以编程方式调整了宽度,但注释无效。 在我运行安卓2.2的手机上,该切换正确显示 以下是其中一个按钮的XML: <ToggleButton android:id="@+id/cat_btn1" android:layout_width="wrap_

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

我首先想到它可能被切断了,所以我设置了按钮高度
200dp
,但指示器仍然不在那里。
我还以编程方式调整了宽度,但注释无效。
在我运行安卓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" />

我决定用API17创建另一个项目,它有一个切换按钮,并且显示正确,所以我不知道是什么原因导致了我的第一个项目出现问题

第二个项目图像和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" />


使用自定义主题时要小心。在许多情况下,您需要根据API级别从适当的父主题继承,以获得所需的外观

使用Eclipse中的活动创建的现代项目将为您设置样式资源,以鼓励:

  • res/values/styles.xml
    定义了一个
    AppBaseTheme
    ,继承自API 11级之前的主题(例如,
    theme.Light

  • res/values-v11/styles.xml
    重写
    AppBaseTheme
    以继承
    Holo
    主题(例如,
    theme.Holo.Light

  • res/values-v14/styles.xml
    可能存在以再次覆盖
    AppBaseTheme
    (例如,使用
    Theme.Holo.Light.darkaActionBar

  • res/values/styles.xml
    还具有
    AppTheme
    ,定义为继承自
    AppBaseTheme
    ,您在清单中引用
    AppTheme
    ,以及应用程序的主题(或活动的主题)


AppTheme
中放置可以在任何API级别上工作的自定义设置。将特定于API级别的自定义设置放入相应的
AppBaseTheme
。而且,如果您想更改常规外观(例如,切换到暗/无操作栏),请使用适合该API级别的主题来更改
AppBaseTheme
继承自的主题。

我会在
切换按钮上取消
onClick
——请使用
setOnCheckedChangedListener()
响应
切换按钮
状态的更改。另外,您的第一个项目使用的自定义主题可能会干扰
切换按钮的样式设置吗?我只是使用
theme.Black.NoTitleBar
。是在所有按钮上使用建议的侦听器,还是仅切换?“是在所有按钮上使用建议的侦听器,还是仅切换?”——
ToggleButton
处理自己的单击事件,以及
CompoundButton
的所有子类。因此,使用
setOnCheckedChangedListener()
是有意义的。非常感谢。我尝试使用
主题
,但没有改变按钮。我还拿出了
onClick
,但仍然没有指示灯。您可以尝试在层次结构视图中戳这两个活动,看看是否有什么东西突然向您扑来,这可能是您的问题的根源。