我有一个textview,希望它的角是圆形的。我已经知道它可以使用android:background="@drawable/somefile"。在我的情况下,这个标签已经包括,所以不能再次使用。例如android:background="@drawable/mydialogbox"已经在后台创建图像

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:background="@drawable/mydialogbox"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textview_name"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    </LinearLayout>

</RelativeLayout>

所以当我想textview(textview_name)也与圆角,这是如何实现的。


当前回答

右键单击可绘制文件夹并创建新文件 根据您的要求命名文件,并将扩展名添加为.xml。 在文件中添加以下代码

  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      <corners android:radius="5dp" />
      <stroke android:width="1dp"  />
      <solid android:color="#1e90ff" />
  </shape>

添加你想要的圆角边android:background="@drawable/corner"

其他回答

把你的TextView内MaterialCardView:

    <com.google.android.material.card.MaterialCardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="25dp"
        >
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/emergency_sms_template"
            android:padding="6dp"
            android:textSize="11sp"
            />
    </com.google.android.material.card.MaterialCardView>

因为你的顶层视图已经设置了android:background属性,你可以使用<layer-list>(链接)来创建一个新的XML绘图,它结合了你的旧背景和新的圆角背景。

列表中的每个<item>元素都绘制在下一个元素之上,因此列表中的最后一项是在顶部结束的元素。

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap android:src="@drawable/mydialogbox" />
    </item>
    <item>
        <shape>
            <stroke
                android:width="1dp"
                android:color="@color/common_border_color" />

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

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

            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dp" />
            <solid android:color="#ffffff"/>

        </shape>
    </item>
</layer-list>

在材质组件库中,你可以使用MaterialShapeDrawable。

使用TextView:

    <TextView
        android:id="@+id/textview"
        ../>

你可以通过编程方式应用MaterialShapeDrawable:

float radius = getResources().getDimension(R.dimen.corner_radius);

TextView textView = findViewById(R.id.textview);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
        .toBuilder()
        .setAllCorners(CornerFamily.ROUNDED,radius)
        .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(textView,shapeDrawable);

如果你想改变背景颜色和边框,只需应用:

shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.....));
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color....));

有两个步骤

1)在你的可绘制文件夹中创建这个文件:- rounded_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
         <corners android:radius="10dp" />  // set radius of corner
         <stroke android:width="2dp" android:color="#ff3478" /> // set color and width of border
         <solid android:color="#FFFFFF" /> // inner bgcolor
</shape>

2)设置这个文件到你的TextView作为背景属性。

android:background="@drawable/rounded_corner"

你也可以在Button或Edittext中使用这个drawable