Стиль андроида – кнопка

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

Alt text

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

Alt text

Solutions Collecting From Web of "Стиль андроида – кнопка"

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-патч . Чтобы не было пробелов (полей) между кнопками, вам нужно создать соответствующий макет в 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> 1 <?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 <?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 и заставить его действовать как кнопка. Вот пример кода для вас

 <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){} 

Затем выполните то, что вы хотите сделать в этом методе