Android - стиль кнопки - PullRequest
       4

Android - стиль кнопки

24 голосов
/ 20 декабря 2010

Обычная кнопка выглядит так:

alt text

Теперь, пожалуйста, дайте мне знать, как я могу сделать простую кнопку такой же, как кнопка прикрепленного изображения (то есть форма угла кнопки круглая, а между двумя кнопками нет зазора)

alt text

Ответы [ 8 ]

25 голосов
/ 17 мая 2012

1 - создание фигур (с желаемыми цветами) для нажатых и отпущенных состояний

Для создания форм я бы предложил этот отличный сайт, который сделает это за вас: http://angrytools.com/android/button/

рисуем \ botton_shape_pressed.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/pressed_button_background"
        android:endColor="@color/pressed_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

рисуем \ botton_shape_released.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/released_button_background"
        android:endColor="@color/released_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

2 - создать селектор для двух фигур

рисуем \ botton_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_selected="true" />
    <item android:drawable="@drawable/botton_shape_released" />
</selector>

3 - используйте селектор для кнопки

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test"
    android:textColor="@color/blue_text"
    android:onClick="testOnClickListener"
    android:background="@drawable/botton_selector" />
23 голосов
/ 20 декабря 2010

9-патч будет работать нормально, но я стараюсь избегать их, так как мне трудно их делать: (

Вы можете попробовать иметь selector и использовать форму для каждого состояния:

Форма будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle">

    <solid android:color="#AAFFFFFF"/>

    <corners android:bottomRightRadius="7dp"
        android:bottomLeftRadius="7dp" 
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp"/>
</shape>
5 голосов
/ 20 декабря 2010

Вам необходимо создать 9-патч для рисования. Чтобы между кнопками не было разрыва (отступа), вам нужно создать соответствующий макет в XML и установить для поля значение 0.

4 голосов
/ 22 июня 2011

найдите исходный код в четвёртом квадрате и найдите файл SegmentedButton.java, это файл, который реализует эти кнопки, показанные на изображении.

4 голосов
/ 28 февраля 2011

Создайте Nine патч для рисования, который легко с draw9patch (часть android / tools), а затем примените стили и темы ... учебник на эта ссылка (Androgames.net) следует начать.

3 голосов
/ 19 октября 2012

для стилизации текста вы можете добавить это в strings.xml

    <style name="ButtonText">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:textSize">30dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">2</item>
    </style>

и вызвать его в кнопке main.xml

 style="@style/ButtonText"

и альтернативном методе, который вы можете использоватьwith создает в @ drawable / btn_black со следующим ...

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#343434" />
            <stroke
                android:width="1dp"
                android:color="#171717" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#343434"
                android:endColor="#171717"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#171717" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
1 голос
/ 20 декабря 2010

Вы также можете использовать ImageView в своем XML-файле, а затем задать для onClickable и onFocusable значение true, а затем создать метод события onClick для внутреннего кода и указать имя метода в XML, чтобы вместо обработки всех форм или кнопок возникли проблемы. просто поместите изображение там и заставьте его действовать как кнопка. Вот пример кода для вас

<ImageView
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:onClick="testClickEvent"
            android:paddingRight="8dip"
            android:paddingBottom="8dip"
            android:src="@drawable/testImg"/>

Как я уже сказал на бэкэнде, создайте метод со знаком, подобным этому, и это сделает работу

public void testClickEvent(View v){}

Тогда реализуй то, что ты хочешь сделать в этом методе

0 голосов
/ 13 сентября 2017

button_primary.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">

        <gradient
            android:angle="270"
            android:endColor="@color/background"
            android:startColor="@color/background" />

        <corners android:radius="1dp" />

        <stroke
            android:width="2px"
            android:color="@color/colorPrimary3" />

    </shape>

call style = "@ style / button_primary"

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