Изменение размера кнопки и цвета фона при нажатии кнопки - PullRequest
2 голосов
/ 17 августа 2011

Я пытаюсь создать макет с 3 кнопками в строке, и я бы хотел, чтобы каждая из них имела ширину 30% от ширины экрана.Какой лучший способ сделать это?

Мой второй вопрос: как мне определить цвет при нажатии для кнопки?Я бы хотел, чтобы кнопки были ЗЕЛЕНЫМИ и при нажатии становились КРАСНЫМИ.

Спасибо!Marco

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

Лучший способ сделать цвет для кнопок состоит в том, чтобы создать настраиваемые элементы рисования для кнопки при нажатии / активной / отключенной / сфокусированной (в моем примере я использую button_faded.png, button_down.png & button_up.png), а затем определитьxml, чтобы сообщить кнопке, как ее использовать:

button.xml:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_faded"
          android:state_enabled="false" />
    <item android:drawable="@drawable/button_down"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_up"
          android:state_focused="true" />
    <item android:drawable="@drawable/button_up" />
</selector>

Затем в макете установите фон "@drawable/button"

или еще лучше вyour styles.xml создайте стиль кнопки:

<style name="Button">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#000000</item>
    <item name="android:textSize">19sp</item>
    <item name="android:background">@drawable/button</item>
    <item name="android:gravity">center</item>
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:paddingBottom">5dp</item>
</style>

и в вашем макете xml укажите кнопке использовать стиль:

    <Button style="@style/Button" />

Что касается макета кнопок ..Если вы ищете 1/3 экрана каждый, создайте горизонтальный LinearyLayout, который содержит все три кнопки.Установите ширину кнопок на fill_parent и присвойте им одинаковый вес макета, скажем, «1» ... Это должно заполнить строку тремя кнопками одинакового размера.Затем вы можете настроить расстояние между ними, используя поля макета или отступы.

1 голос
/ 17 августа 2011
Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();

if(width>height)
{
//Landscape
//set your landscape drawable
}
else
{
//portrait
//set your portrait drawable
}

теперь возьмите переменную ширины 30%, а для цвета просто используйте drawable с различными состояниями, см. здесь

...