I want to make the corners of a button
round. Is there an easy way to achieve this in Android?
问题:
回答1:
If you want something like this
here is the code.
1.Create a xml file in your drawable folder like mybutton.xml and paste the following markup:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<selector xmlns:android=\"http://schemas.android.com/apk/res/android\" >
<item android:state_pressed=\"true\" >
<shape android:shape=\"rectangle\" >
<corners android:radius=\"3dip\" />
<stroke android:width=\"1dip\" android:color=\"#5e7974\" />
<gradient android:angle=\"-90\" android:startColor=\"#345953\" android:endColor=\"#689a92\" />
</shape>
</item>
<item android:state_focused=\"true\">
<shape android:shape=\"rectangle\" >
<corners android:radius=\"3dip\" />
<stroke android:width=\"1dip\" android:color=\"#5e7974\" />
<solid android:color=\"#58857e\"/>
</shape>
</item>
<item >
<shape android:shape=\"rectangle\" >
<corners android:radius=\"3dip\" />
<stroke android:width=\"1dip\" android:color=\"#5e7974\" />
<gradient android:angle=\"-90\" android:startColor=\"#8dbab3\" android:endColor=\"#58857e\" />
</shape>
</item>
</selector>
2.Now use this drawable for the background of your view. If the view is button then something like this:
<Button
android:id=\"@+id/button1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:padding=\"10dp\"
android:textColor=\"#ffffff\"
android:background=\"@drawable/mybutton\"
android:text=\"Buttons\" />
回答2:
Create a xml file in drawable folder like below
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:shape=\"rectangle\" android:padding=\"10dp\">
<!-- you can use any color you want I used here gray color-->
<solid android:color=\"#ABABAB\"/>
<corners android:radius=\"10dp\"/>
</shape>
Apply this as background to button you want make corners round.
Or you can use separate radius for every corner like below
android:bottomRightRadius=\"10dp\"
android:bottomLeftRadius=\"10dp\"
android:topLeftRadius=\"10dp\"
android:topRightRadius=\"10dp\"
回答3:
create shape.xml in drawable folder
like shape.xml
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" >
<stroke android:width=\"2dp\"
android:color=\"#FFFFFF\"/>
<gradient
android:angle=\"225\"
android:startColor=\"#DD2ECCFA\"
android:endColor=\"#DD000000\"/>
<corners
android:bottomLeftRadius=\"7dp\"
android:bottomRightRadius=\"7dp\"
android:topLeftRadius=\"7dp\"
android:topRightRadius=\"7dp\" />
</shape>
and in myactivity.xml
you can use
<Button
android:id=\"@+id/btn_Shap\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"@string/Shape\"
android:background=\"@drawable/shape\"/>
回答4:
It\'s so simple. Create an XML file like below one. Set it as background for the button. Change the radius attribute to your wish, if you need more curve for the button.
button_background.xml
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:shape=\"rectangle\">
<solid android:color=\"@color/primary\" />
<corners android:radius=\"5dp\" />
</shape>
Set background to your button:
<Button
android:id=\"@+id/button1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:background=\"@drawable/button_background\"/>
回答5:
Simple way i found out was to make a new xml file in the drawable folder and then point the buttons background to that xml file. heres the code i used:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\"rectangle\">
<solid android:color=\"#ff8100\"/>
<corners android:radius=\"5dp\"/>
</shape>
回答6:
Create file myButton.xml
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">
<solid android:color=\"@color/colorButton\"/>
<corners android:radius=\"10dp\"/>
</shape>
add to your button
<Button
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:background=\"@drawable/myButton\"/>
回答7:
Create rounded_btn.xml file in Drawable folder...
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">
<solid android:color=\"@color/#FFFFFF\"/>
<stroke android:width=\"1dp\"
android:color=\"@color/#000000\"
/>
<padding android:left=\"1dp\"
android:top=\"1dp\"
android:right=\"1dp\"
android:bottom=\"1dp\"
/>
<corners android:bottomRightRadius=\"5dip\" android:bottomLeftRadius=\"5dip\"
android:topLeftRadius=\"5dip\" android:topRightRadius=\"5dip\"/>
</shape>
and use this.xml file as a button background
<Button
android:id=\"@+id/btn\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:background=\"@drawable/rounded_btn\"
android:text=\"Test\" />
回答8:
This link has all the information you need. Here
Shape.xml
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:shape=\"rectangle\">
<solid android:color=\"#EAEAEA\"/>
<corners android:bottomLeftRadius=\"8dip\"
android:topRightRadius=\"8dip\"
android:topLeftRadius=\"1dip\"
android:bottomRightRadius=\"1dip\"
/>
</shape>
and main.xml
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"vertical\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
<TextView android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"
android:text=\"Hello Android from NetBeans\"/>
<Button android:id=\"@+id/button\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"Nishant Nair\"
android:padding=\"5dip\"
android:layout_gravity=\"center\"
android:background=\"@drawable/button_shape\"
/>
</LinearLayout>
This should give you your desired result.
Best of luck
回答9:
if you are using vector drawables, then you simply need to specify a <corners> element in your drawable definition. I have covered this in a blog post.
If you are using bitmap / 9-patch drawables then you\'ll need to create the corners with transparency in the bitmap image.
回答10:
style button with icon
<Button
android:id=\"@+id/buttonVisaProgress\"
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"
android:layout_gravity=\"center_horizontal\"
android:layout_marginTop=\"5dp\"
android:background=\"@drawable/shape\"
android:onClick=\"visaProgress\"
android:drawableTop=\"@drawable/ic_1468863158_double_loop\"
android:padding=\"10dp\"
android:text=\"Visa Progress\"
android:textColor=\"@android:color/white\" />
shape.xml
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:shape=\"rectangle\">
<corners android:radius=\"14dp\" />
<gradient
android:angle=\"45\"
android:centerColor=\"#1FA8D1\"
android:centerX=\"35%\"
android:endColor=\"#060d96\"
android:startColor=\"#0e7e1d\"
android:type=\"linear\" />
<padding
android:bottom=\"0dp\"
android:left=\"0dp\"
android:right=\"0dp\"
android:top=\"0dp\" />
<size
android:width=\"270dp\"
android:height=\"60dp\" />
<stroke
android:width=\"3dp\"
android:color=\"#000000\" />