26

I have a button created and have set the background color and text color as can be seen below. My question is: how do I set the buttons border color? I want to set the border color to white

Here is the button in my res -> layout -> main_nav.xml

<Button 
        android:id="@+id/btn_emergency"
        style="@style/buttonStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Contact and Emergency" 
        android:onClick="onClickHandleStates" />

And here is its associated style in res -> values -> styles. The first 2 "items" work fine on their own. The final "item" was my attempt at changing button border to white without success.

<!-- The button styles -->
<style name="buttonStyle">
    <item name="android:textColor">#ffffff</item>
    <item name="android:background">#80000000</item>

    <item name="android:button">
        <shape
            android:shape="rectangle" >
            <stroke
                android:width="0.5dp"
                android:color="#ffffff" />  
        </shape>
    </item>
</style>
Junior Mayhé
  • 16,144
  • 26
  • 115
  • 161
heyred
  • 2,031
  • 8
  • 44
  • 89

6 Answers6

41

Use the <stroke> element. Add this xml file in res/drawable folder as button_border.xml:

 <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFF" 
       android:endColor="#00FF00"
       android:angle="270" />
    <corners android:radius="3dp" />
    <stroke android:width="5px" android:color="#ffffff" />
 </shape>

then call this by

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_margin="10dp"
   android:background="@drawable/button_border"
   android:text="Button" 
/>
Simon Featherstone
  • 1,716
  • 23
  • 40
Shivang Trivedi
  • 2,182
  • 1
  • 20
  • 26
9

Try this

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

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

<stroke
    android:width="2px"
    android:color="#ffffff" />

</shape>
madhu527
  • 4,644
  • 1
  • 28
  • 29
7

You can use this Online Button generator to Customize your button http://angrytools.com/android/button/

JRE.exe
  • 801
  • 1
  • 15
  • 28
5

enter image description here

<?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="#E8f2fe"
    android:startColor="#E8f2fe" />

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

<stroke
    android:width="2px"
    android:color="#486e9d" />
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Dhina k
  • 1,481
  • 18
  • 24
5

try Material button

Set app:strokeWidth, app:strokeColor as per your need

<com.google.android.material.button.MaterialButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/Widget.MaterialComponents.Button.OutlinedButton"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:strokeWidth="0.6dp"
    app:cornerRadius="2dp"
    android:text="Reassign"
    android:textColor="@color/colorAccent"
    app:strokeColor="@color/colorAccent"

    />

Note : you need to add dependency for material widgets

//Material Components for Android
implementation 'com.google.android.material:material:1.0.0'
Ranjithkumar
  • 16,071
  • 12
  • 120
  • 159
0

If you would like a transparent background for your button, then use Shivang Trivedi's answer but remove the "gradient" section like so:

<?xml version="1.0" encoding="utf-8"?>   <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="3dp" />
    <stroke android:width="5px" android:color="#ffffff" />  </shape>
Carl Du Plessis
  • 325
  • 3
  • 6