Как установить цвет фона для кнопки в выбранных и нажатых состояниях с изображением @drawable - PullRequest
1 голос
/ 09 августа 2011

buttons screen shot

На изображении выше вы видите первую кнопку Home в нажатом состоянии.У него нет цвета фона, и мне нужно, чтобы он был черным (желательно, чтобы он был затенен аналогично цвету по умолчанию, показанному для других кнопок при сохранении изображения).Мне также нужно изменить цвет текста на белый.

У меня есть XML-код, который меняет изображение в зависимости от состояния, но я в полной растерянности относительно того, как изменить цвет фона одновременно.

Код, который у меня есть для этой конкретной кнопки:

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:state_selected="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:drawable="@drawable/ic_tab_about_unpressed" /><!-- default/unchecked -->
</selector>

и:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MnuBtnStyle" parent="android:style/Widget.Button">
    <item name="android:ellipsize">marquee</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:singleLine">true</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_marginTop">1dip</item> 
        <item name="android:layout_marginBottom">1dip</item>
        <item name="android:textSize">10dp</item>
    <item name="android:layout_weight">1</item>
        <item name="android:textColor">#000000</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

Как мне этого добиться?

ОБНОВЛЕНИЕ

Мои требования к кнопке:

  1. Я должен иметь возможность изменить изображение для различных состояний
  2. Я должен иметь возможность изменитьтекст, использующий строки или код, который не беспокоит.
  3. Я должен иметь возможность установить цвет лица кнопки для значений по умолчанию и различных состояний.

Нужно ли создавать новый пользовательскийконтроль для достижения этого?Если это так, какой мой лучший подход, учитывая, что это мой первый проект для Android?

1 Ответ

0 голосов
/ 09 августа 2011

Попробуйте использовать ImageButton вместо кнопки:

<ImageButton
android:layout_width="60dip"
android:layout_height="60dip"
android:src="@drawable/state_btn_icon"
android:background="@drawable/state_btn_background"/>

state_btn_icon.xml определяет различные состояния для значка кнопки

и

state_btn_background определяет различные состояния для фона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...