我在定义两个单独的自定义 XML 按钮定义时遇到了一个奇怪的问题。我创建了一个测试项目只是为了复制错误,所以我将添加问题的完整代码和屏幕截图。基本上,我想使用 9-patch 图像来定义可以重用的自定义 XML 按钮配置。
我定义了两个 XML 文件:
z_btn_xml_glossy_blue_lightblue.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="@drawable/z_btn_glossy_lightblue" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
<item
android:state_pressed="true"
android:drawable="@drawable/z_btn_glossy_lightblue" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
<item
android:drawable="@drawable/z_btn_glossy_blue" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
</selector>
z_btn_xml_glossy_black_white.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="@drawable/z_btn_glossy_white" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
<item
android:state_pressed="true"
android:drawable="@drawable/z_btn_glossy_white" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
<item
android:drawable="@drawable/z_btn_glossy_black" >
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</item>
</selector>
如您所见,这两个文件本质上完全相同,但使用了不同的可绘制对象。我的 main.xml 布局文件是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="0dip"
android:paddingBottom="3dip" >
<Button
android:id="@+id/BTNHostWaitingStartGame"
android:background="@drawable/z_btn_xml_glossy_blue_lightblue"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:layout_marginRight="2dip"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:layout_weight="1.0"
android:text="Start Game" />
<Button
android:id="@+id/BTNHostWaitingCancelGame"
android:background="@drawable/z_btn_xml_glossy_black_white"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:layout_marginLeft="2dip"
android:layout_width="wrap_content"
android:layout_height="45dip"
android:layout_weight="1.0"
android:text="Cancel Game" />
</LinearLayout>
非常简单,它只创建了两个按钮。我不会发布测试活动文件,因为它所做的只是将布局设置为 R.layout.main。
这是 Eclipse 中图形布局的屏幕截图,它看起来像我希望按钮的样子:
但是,在模拟器上,它如下所示:
如您所见,第二个按钮未设置样式。谁能解释这是为什么?在设备上也是如此。这里有一些我不知道或没有看到的限制吗?
谢谢您的帮助!