Нормальная кнопка выглядит следующим образом:
Теперь, пожалуйста, дайте мне знать, как я могу сделать простую кнопку такой же, как кнопка прикрепленного изображения (т.е. форма кнопки кнопки круглая, а также нет пробела между двумя кнопками)
Нормальная кнопка выглядит следующим образом:
Теперь, пожалуйста, дайте мне знать, как я могу сделать простую кнопку такой же, как кнопка прикрепленного изображения (т.е. форма кнопки кнопки круглая, а также нет пробела между двумя кнопками)
9-patch будет отлично работать здесь, но я стараюсь избегать их, так как мне тяжело это делать: (
Вы можете попробовать иметь 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>
Вот несколько замечательных примеров кнопок градиента, включая предварительный просмотр: http://www.dibbus.com/2011/02/gradient-buttons-for-android/
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" />
Вам нужно создать 9-patch. Чтобы не иметь пробела (поля) между кнопками, вам нужно создать соответствующий макет в XML и установить значение поля 0.
Создайте Nine patch drawable, который легко с draw9patch (часть android/tools), а затем примените стили и темы... учебник на этой ссылке (Androgames.net) должен начать работу.
найдите исходный код с четырьмя запросами и посмотрите файл SegmentedButton.java, это файл, который реализует эти кнопки, показанные на изображении.
Я хотел бы поделиться одной статьей, которую стоит реализовать для Button. Вот статья: http://www.dibbus.com/2011/03/9patch-images-in-android/, ее действительно хорошая и удивительная статья.
чтобы стилизовать текст, который вы можете добавить в файл 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"
и альтернативный метод, с которым вы можете играть, создает в @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>
Вы также можете использовать ImageView в своем XML файле, а затем дать onClickable и onFocusable true, а затем создать метод события onClick для кода backend и указать имя метода в 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){}
Затем выполните то, что вы хотите сделать в этом методе
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>
Вызов стиль = "@стиль/button_primary"