Góc làm tròn cho textview trong Android


171

Tôi có một textview và muốn góc của nó có dạng tròn. Tôi đã biết nó có thể được thực hiện bằng cách sử dụng android:background="@drawable/somefile". Trong trường hợp của tôi, thẻ này đã được bao gồm vì vậy không thể sử dụng lại. ví dụ android:background="@drawable/mydialogbox"đã có sẵn để tạo hình ảnh trong nền

<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>

Vì vậy, khi tôi muốn textview(textview_name)với góc tròn, làm thế nào điều này có thể đạt được.


4
nếu bạn đã có câu trả lời của mình hơn là chấp nhận câu trả lời để người khác có thể nhận trợ giúp từ đóng góp của bạn
MilapTank

Câu trả lời:


437

1) Tạo rounded_corner.xmltrong drawablethư mục và thêm nội dung sau đây,

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

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

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

   <corners android:radius="5dp" />
</shape>

2) Đặt drawable này trong thuộc tính TextViewnền. Ví dụ:

android:background="@drawable/rounded_corner"

Tôi hy vọng điều này hữu ích cho bạn.


16
Câu trả lời là chính xác chỉ là anh chàng đã đăng không giải thích chi tiết. Bạn cần tạo một xml [ví dụ. round_view.xml] trong thư mục drawable của bạn với đoạn mã trên. Và trong bố cục của bạn xung quanh textview của bạn, hãy đặt nó dưới dạng tham số android: background = "@ drawable / round_view"
Sharjeel Ahmed

4
android: background = "@ drawable / round_corner" không sử dụng tiện ích mở rộng tại đây!
Boris Gafurov 24/2/2015

4
Thêm android:shape="rectangle"nếu nó không làm việc cho bạn
kristyna

Và xây dựng lại dự án của bạn nếu nó không hoạt động tự động
adek111

18

Bên cạnh radius, có một số tài sản để góc tròn như topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Ví dụ TextViewvới redbiên giới with corner andnền gray`

bg_rounded.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="10dp"
        android:color="#f00" />

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

    <corners
        android:radius="5dp"
        android:topRightRadius="100dp" />
</shape>

Xem văn bản

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_rounded"
    android:text="Text"
    android:padding="20dp"
    android:layout_margin="10dp"
    />

Kết quả

nhập mô tả hình ảnh ở đây


16

Vì chế độ xem cấp cao nhất của bạn đã có bộ thuộc tính android: nền, bạn có thể sử dụng <layer-list>( liên kết ) để tạo một bản vẽ XML mới kết hợp cả nền cũ và nền góc tròn mới của bạn.

Mỗi <item>phần tử trong danh sách được vẽ tiếp theo, vì vậy mục cuối cùng trong danh sách là phần cuối cùng nằm trên cùng.

<?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>

6

tạo một tập tin gradient xml trong thư mục drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="#667162" />
            <gradient android:angle="-90" android:startColor="#ffffff" android:endColor="#ffffff" />
        </shape>
    </item>
</selector>

sau đó thêm phần này vào TextView của bạn

android:background="@drawable/gradient"

6
  1. Nhấp chuột phải vào Thư mục có thể vẽTạo tệp mới
  2. Đặt tên tệp theo bạn và thêm phần mở rộng là .xml .
  3. Thêm mã sau vào tệp
  <?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>
  1. Thêm dòng nơi bạn muốn cạnh tròn android:background="@drawable/corner"

4

Bạn có thể sử dụng hình dạng hình chữ nhật được cung cấp (không có độ dốc, trừ khi bạn muốn) như sau:

Trong drawable/rounded_rectangle.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" android:color="#ff0000" />
    <solid android:color="#00ff00" />
</shape>

Sau đó, trong chế độ xem văn bản của bạn:

android:background="@drawable/rounded_rectangle"

Tất nhiên, bạn sẽ muốn tùy chỉnh kích thước và màu sắc.


4

Có hai bước

1) Tạo tệp này trong thư mục có thể vẽ của bạn: - 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) Đặt tệp này vào thuộc TextViewtính nền của bạn .

android:background="@drawable/rounded_corner"

Bạn cũng có thể sử dụng drawable này trong Nút hoặc Edittext


3
<?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>

2

Với Thư viện Thành phần Vật liệu, bạn có thể sử dụng MaterialShapeDrawable.

Với một TextView:

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

Bạn có thể lập trình áp dụng một 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);

nhập mô tả hình ảnh ở đây

Nếu bạn muốn thay đổi màu nền và đường viền, chỉ cần áp dụng:

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

0

Bạn có thể sử dụng SVG để làm tròn các góc và tải vào ImageView và sử dụng ConstraintLayout để mang ImageView trên TextView

Tôi đã sử dụng nó cho ImageView tròn và TextView tròn


0

Chỉ cần sử dụng một hình ảnh góc tròn làm nền của chế độ xem đó sẽ làm cho nó trở nên như vậy.

android:background="@drawable/my_custom_image"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.