安卓:带有完美圆角的可绘制对象

6

我正在尝试创建下面这样的可绘制对象:enter image description here

我是用以下代码创建的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/white"
    android:padding="10dp"
    android:orientation="vertical">

<View
    android:layout_width="40dp"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:background="@drawable/bg_round_button_green"/>

<View
    android:layout_width="40dp"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:background="@drawable/bg_round_button_green"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="36dp"
    android:text="Text"
    android:textColor="@color/white"
    android:textSize="22sp"
    android:gravity="center"
    android:layout_centerVertical="true"
    android:background="@color/siam_green3"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"/>

</RelativeLayout>  

bg_round_button_green.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring">
    <solid android:color="#FF0DAB61"/>
</shape>  

我也尝试了这个: bg_round_button_green.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FF0DAB61"/>
    <corners android:radius="100dp"/>
</shape>  

但它会显示:
enter image description here

是否可能只使用单个形状可绘制对象来完成此操作(而无需创建三个视图)?


确实是矩形,带有圆角(你的第二次尝试)。只需将圆角设置为你的TextView高度的1/2。例如:对于一个36dp高的TextView,圆角应该是18dp(而不是100dp)。 - Phantômaxx
我已经做过了,但是没有起作用。 - palatok
дҪ еә”иҜҘеңЁTextViewдёӯдҪҝз”Ёandroid:background="@drawable/bg_round_button_green"пјҢиҖҢдёҚжҳҜandroid:background="@color/siam_green3"гҖӮ - Phantômaxx
对于第二张图片,我使用了它。 - palatok
使用ShapeDrawable和传递给ShapeDrawable构造函数的自定义形状。 - pskink
当然了。因此,只需将角落大小与TextView高度匹配即可。 - Phantômaxx
2个回答

8

试一下这个。对我来说完美运行。

<?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#A5000000"/>
    <stroke android:width="0dp"
      android:color="#00FFFFFF"/>
    <padding android:left="0dp"
      android:top="0dp"
      android:right="0dp"
      android:bottom="0dp"/>
    <corners android:bottomRightRadius="10dp"
      android:bottomLeftRadius="10dp"
      android:topLeftRadius="10dp"
      android:topRightRadius="10dp"/>
  </shape>

2

如果您将一个可绘制对象的角设置为较大的值:

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

您将在不需要3D视图的情况下获得所需内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接