Закругленная кнопка в Android
Я хочу создать округлые кнопки в программе для Android. Я посмотрел на Как создать EditText с закругленными углами?
чего я хочу добиться-это:
- Закругленные Края Кнопок
- изменить фон кнопки / внешний вид в разных состояниях (например, Onclick, Focus)
- используйте мой собственный PNG для фона, а не создавать форму.
9 ответов:
вы можете сделать закругленную угловую кнопку, не прибегая к ImageView.
ресурс селектора фона,
button_background.xml:<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Non focused states --> <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/button_unfocused" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_unfocused" /> <!-- Focused states --> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/button_focus" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_focus" /> <!-- Pressed --> <item android:state_pressed="true" android:drawable="@drawable/button_press" /> </selector>для каждого состояния, рисуемый ресурс, например button_press.XML-код:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="1dp" android:color="#FF404040" /> <corners android:radius="6dp" /> <gradient android:startColor="#FF6800" android:centerColor="#FF8000" android:endColor="#FF9700" android:angle="90" /> </shape>Примечание
cornersатрибут, это дает вам закругленные углы!затем установите фон, который можно нарисовать на кнопке:
android:background="@drawable/button_background"EDIT (9/2018): тот же метод может быть использован для создания круглой кнопки. Круг-это действительно просто квадратная кнопка с размером радиуса, установленным на 1/2 стороны квадрата
кроме того, в примере выше
strokeиgradientне являются необходимыми элементами, это просто примеры и способы, которыми вы сможете увидеть закругленную угловую форму
Если вам нужна закругленная кнопка в Android, то создайте XML-файл " RoundShapeBtn.формате XML" в качестве выигрышного.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="#6E6E6E"/> <!-- this one is ths color of the Rounded Button --> <corners android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" android:topLeftRadius="10dp" android:topRightRadius="10dp"/> </shape>добавить в код кнопки:
android:background="@drawable/RoundShapeBtn"
создать xml-файл в папке drawable в android, как:
rounded_button.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="20dp"/> // if you want clear round shape then make radius size is half of your button`s height. <solid android:color="#EEFFFFFF"/> // Button Colour <padding android:bottom="5dp" android:left="10dp" android:right="10dp" android:top="5dp"/> </shape>теперь этот xml-файл в качестве фона кнопок.
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/rounded_button" android:text="@string/button_text" android:textColor="@color/black"/>
рекомендуется Google что вы не имитируете элементы пользовательского интерфейса с других платформ. Я бы не стал помещать округлые кнопки стиля iOS в приложение для Android.
расширения
ImageViewвот так:public class RoundedImageView extends ImageView { private static final String TAG = "RoundedImageView"; private float mRadius = 0f; public RoundedImageView(Context context) { super(context); } public RoundedImageView(Context context, AttributeSet attrs) { super(context, attrs); // retrieve styles attributes TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundedView); mRadius = a.getDimension(R.styleable.RoundedView_radius, 0f); a.recycle(); } @Override protected void onDraw(Canvas canvas) { // only do this if we actually have a radius if(mRadius > 0) { RectF rect = new RectF(0, 0, getWidth(), getHeight()); Path clipPath = new Path(); clipPath.addRoundRect(rect, mRadius, mRadius, Path.Direction.CW); canvas.clipPath(clipPath); } super.onDraw(canvas); } }и примените к нему свой обычный фоновый ресурс, и он должен быть обрезан с закругленными углами.
Это можно сделать с помощью атрибута углу. Посмотрите на ниже xml.
<item> <shape android:shape="rectangle" > <stroke android:height="1.0dip" android:width="1.0dip" android:color="#ffee82ee" /> <solid android:color="#ffee82ee" /> <corners android:bottomLeftRadius="102.0dip" android:bottomRightRadius="102.0dip" android:radius="102.0dip" android:topLeftRadius="102.0dip" android:topRightRadius="102.0dip" /> </shape> </item>
гораздо лучше поместить состояния и формы кнопок в 1 XML-файл селектора. Это должно сделать ваше приложение работать быстрее / лучше. Попробуйте это (любезно введение в разработку приложений для Android). Не спам здесь просто показывает, что это не мой код.
<?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="12dip" /> <stroke android:width="1dip" android:color="#333333" /> <gradient android:angle="-90" android:startColor="#333333" android:endColor="#555555" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle" > <corners android:radius="12dip" /> <stroke android:width="1dip" android:color="#333333" /> <solid android:color="#58857e"/> </shape> </item> <item > <shape android:shape="rectangle" > <corners android:radius="12dip" /> <stroke android:width="1dip" android:color="#333333" /> <gradient android:angle="-90" android:startColor="#333333" android:endColor="#555555" /> </shape> </item> </selector>С.-конструкции П. совет: градиенты и скругленные прямоугольники лучше всего использовать, когда вы вряд ли можете сказать, что они есть-используйте с умом.
закругленные кнопки можно создавать с помощью формы кольца drawable Также, см. http://www.zoftino.com/android-shape-drawable-examples
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thickness="40dp" android:useLevel="false"> <solid android:color="@color/colorPrimary" /> <padding android:bottom="50dp" android:left="16dp" android:right="16dp" android:top="50dp"/> </shape>
создать Drawable ресурс с именем btnOval-- > затем мимо кода;
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:padding="10dp"> <solid android:color="#6E6E6E"/> </shape>и пользователь внутри кнопки тега, как,
<Button andorid:width="" android:hieght="" android:background="@Drawable/btnOval" />
Comments