Разработка Android - пользовательские кнопки Внешний вид / Поведение - PullRequest
1 голос
/ 12 мая 2011

Я пишу чрезвычайно простое приложение для Android.При этом я обнаружил, что мне довольно сложно эмулировать элементы пользовательского интерфейса кнопки, которые находятся на экране выбора приложений Droid X.Для тех, кто не знаком, это значок с белым текстом под ними.Текст имеет черный прямоугольник с закругленными углами позади него, и когда кнопка нажата, фон под значком и текстом становится красным.

Мое текущее решение включает StateListDrawables, но тогда прямоугольник с закругленными углами имеет фиксированную ширину и имеетбыть отредактированным в каждом значке кнопки.Локализация - это конечная цель, поэтому мое решение в лучшем случае является временным.Я предполагаю, что есть менее глупый способ сделать это?

1 Ответ

0 голосов
/ 12 мая 2011

Я не пробовал это, и я никогда не видел кнопку, о которой вы говорите. Но процесс должен быть чем-то похожим.

Сначала вы создаете свои рисованные объекты (фактические фоновые изображения). Один с красным фоном и один прозрачный. Ваш нарисованный XML будет выглядеть примерно так:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_bg_red"/>
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_bg_red"/>
    <item android:state_focused="true" android:drawable="@drawable/btn_bg_pressed"/>
    <item android:state_focused="false" android:state_pressed="false" android:drawable="@android:color/transparent"/>
</selector>

Тогда ваша кнопка может быть объявлена ​​так:

<Button android:id="@+id/droid_x_btn"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Droid Does"
                android:drawableTop="@drawable/btn_icon" <!-- this is for the icon on top -->
                android:background="@drawable/ic_droid_x_button" <!-- The name of the above file without extension -->
                android:textColor="@color/white" />

Надеюсь, это поможет!

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