2014-12-30 2 views
14

Я хочу сделать кнопку так же, как в этом образеКак сделать форму капсулы Кнопка в android?

Capsule button

Я хочу использовать файл XML, который будет использоваться для создания такой кнопки. Может ли кто-нибудь сказать мне, как это сделать?

+0

Вы можете проверить здесь для возможного ответа yours.http: //stackoverflow.com/questions/7606995/android-how-apply-shape-and-selector-simultaneously-for-button – virendrao

ответ

28

, наконец, я нашел способ сделать это с XML-файл. вот код файла xml, который дал мне кнопку формы капсулы.

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

    <corners 
    android:bottomLeftRadius="30dp" 
    android:bottomRightRadius="30dp" 
    android:radius="60dp" 
    android:topLeftRadius="30dp" 
    android:topRightRadius="30dp" /> 

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

    <padding 
    android:bottom="0dp" 
    android:left="0dp" 
    android:right="0dp" 
    android:top="0dp" /> 

    <size 
    android:height="60dp" 
    android:width="270dp" /> 

</shape>  
+1

Атрибут «radius» будет игнорировать, потому что вы также устанавливаете индивидуальный радиус (например, 'bottomLeftRadius'). Чтобы процитировать [docs] (http://developer.android.com/guide/topics/resources/drawable-resource.html), «Радиус для всех углов в качестве значения измерения или ресурса измерения. Это переопределяется для каждого угол по следующим атрибутам. " – tir38

+0

Я удалил атрибут статического размера и увеличил общий радиус до 50 дп (после удаления всего верхнего, нижнего, левого и правого радиуса) –

2

рассмотреть настройку shape к нему и использовать corners внутри этой формы:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners android:radius="10dp"/> <!-- increasing the value, increases the rounding. And as TTransmit said, to make it like a capsule make the radius half of your button height --> 
    <solid android:color="#AAAAAA"/> <!-- the button color --> 

</shape> 

Таким образом, сохранить эту форму в папке /drawable, скажем, это будет сохранено как «button_bg.xml», так при объявлении кнопки в макете XML:

<Button 
    android:background="@drawable/button_bg" 
    android:layout_height="20dp" 
       . 
       .       /> 
+1

Хитрость получить форму капсулы, чтобы дополнительно указать высоту элемента кнопки как дважды радиус угла, то есть 20dp в этом случае. Хорошим вариантом будет создание стиля с использованием высоты и выделенного фона. – TTransmit

+0

@TTransmit хороший совет –

+0

Я пробовал вышеупомянутые способы использования, используя как прямоугольник, так и овальную форму, но ничто, кажется, не дает форму капсулы, которую я хочу. – user3393926

0

Вот код для создания кнопки в XML, но если вы хотите кнопку, чтобы создать как капсула в форме, вы должны добавить фон

 <Button 
      android:id="@+id/image" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      **android:background="@drawable/button_background"** 
      android:text="@string/image" > 
     </Button> 

создать button_background.xml в вытяжке папке, напишите следующий код в button_background.xml

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

      <shape xmlns:android="http://schemas.android.com/apk/res/android" 

      android:shape="rectangle" android:padding="40dp"> 

      <!-- you can use any color you want I used here gray color--> 

     <solid android:color="#01A9DB"/> 

      <corners 

      android:bottomRightRadius="20dp" 

      android:bottomLeftRadius="20dp" 

      android:topLeftRadius="20dp" 

      android:topRightRadius="20dp"/> 

     </shape> 
Смежные вопросы