#android #xml #android-layout #drawable #android-xml
#Android #xml #android-layout #с возможностью рисования #android-xml
Вопрос:
У меня возникла странная проблема с определением двух отдельных пользовательских определений кнопок XML. Я создал тестовый проект исключительно для воспроизведения ошибки, поэтому я добавлю полный код и скриншоты проблемы. В принципе, я хотел бы использовать изображения с 9 исправлениями для определения пользовательских конфигураций кнопок 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, который выглядит так, как я хочу, чтобы кнопки выглядели:
Однако в эмуляторе это выглядит следующим образом:
Как вы можете видеть, вторая кнопка не оформляется. Кто-нибудь может пролить свет на то, почему это? То же самое и на устройствах. Есть ли здесь какое-то ограничение, о котором я просто не знаю или не вижу?
Спасибо за помощь!
Комментарии:
1. что происходит, когда вы фокусируетесь или нажимаете вторую кнопку?
2. Кнопка функционирует так, как если бы она была нажата (то есть после того, как я отпущу), но при фокусировке или нажатии изображение кнопки не изменяется.
Ответ №1:
Это работает на моем компьютере.
Я взял ваш код и поместил XML-селектор в res / drawable. Предполагая, что ссылки для рисования в item
s являются изображениями (например, это z_btn_glossy_lightblue
относится к res / drawable-hdpi / z_btn_glossy_lightblue.png), я заменил эти ссылки на некоторые собственные изображения. Работает как шарм.
Попробуйте:
- Убедитесь, что вы поместили свои XML-файлы в правильную папку, и убедитесь, что копии этих файлов не были ошибочно помещены в другую папку.
- Убедитесь, что у ваших чертежей, на которые вы ссылаетесь в элементах, нет одноименных, например res / drawable /z_btn_glossy_lightblue.xml
- Проверьте ссылки на другие изображения, которые, как вы знаете, работают в других кнопках.