Закруглений кут для перегляду тексту в Android


171

У мене є перегляд тексту і хочу, щоб його куточок був круглої форми. Я вже знаю, що це можна зробити за допомогою 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)також з круглим кутом, як цього можна досягти.


4
якщо ви отримали свою відповідь, ніж приймаєте відповідь, тож інші можуть отримати допомогу від вашого внеску
MilapTank

Відповіді:


438

1) Створіть rounded_corner.xmlу drawableпапці та додайте наступний вміст,

<?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) Встановіть це малювання у TextViewвластивості фону. Наприклад:

android:background="@drawable/rounded_corner"

Сподіваюся, це вам корисно.


16
Відповідь правильна лише в тому, що хлопець, який розмістив повідомлення, не пояснив його детально. Вам потрібно створити xml [напр. rounded_view.xml] у папці, що малюється, із вказаним вище кодом. І у вашому макеті, що оточує ваш текстовий перегляд, поставте це як параметр android: background = "@ dravable / rounded_view"
Шарджіл Ахмед

4
android: background = "@ dravable / rounded_corner" не використовуйте тут розширення!
Борис Гафуров

4
Додайте, android:shape="rectangle"якщо це не спрацювало для вас
kristyna


18

Поруч radiusє деякий властивість обігнути кут , як topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Приклад TextViewз redкордоном with corner andgray` фоном

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>

TextView

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

Результат

введіть тут опис зображення


16

Оскільки у вашому поданні верхнього рівня вже встановлено властивість 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>

6

створити XML-файл gradient.xml у папці, що малюється

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

потім додайте це до TextView

android:background="@drawable/gradient"

6
  1. Клацніть правою кнопкою миші на папці Dravable Folder і створіть новий файл
  2. Назвіть файл відповідно до себе та додайте розширення як .xml .
  3. Додайте у файл наступний код
  <?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. Додайте рядок, де потрібно округлий край android:background="@drawable/corner"

4

Ви можете використовувати надану форму прямокутника (без градієнта, якщо ви не бажаєте) наступним чином:

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

Потім у текстовому вікні:

android:background="@drawable/rounded_rectangle"

Звичайно, ви захочете налаштувати розміри та кольори.


4

Є два кроки

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"

Ви також можете використовувати цей малюнок у кнопці чи редакційному тексті


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

З бібліотекою матеріальних компонентів ви можете використовувати 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....));

0

Ви можете використовувати SVG для закруглення кутів та завантаження у ImageView та використання ConstraintLayout для залучення ImageView у TextView

Я використовував його для округленого ImageView і округлого TextView


0

Просто використання зображення закругленого кута як фону цього виду зробить це так.

android:background="@drawable/my_custom_image"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.