Закругленный угол для просмотра текста в 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 = "@ drawable / roundnded_view"
Шарджил Ахмед

4
android: background = "@ drawable / rounded_corner" не используйте расширение здесь!
Борис Гафуров

4
Добавьте, android:shape="rectangle"если это не сработало для вас
Кристина

И перестройте свой проект, если он не работал автоматически
adek111

18

Рядом radiusесть некоторое свойство обогнуть угол , как topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Пример TextViewс redрамкой with corner andсерого фона

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 в папке 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>

затем добавьте это в ваш TextView

android:background="@drawable/gradient"

6
  1. Щелкните правой кнопкой мыши на Drawable 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"

Вы также можете использовать этот Drawable в Button или 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>

3

С библиотекой компонентов материалов вы можете использовать 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.