Androidでのtextviewの角の丸み


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.xmldrawable、次のコンテンツを追加します。

<?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)このドロアブルをTextViewbackgroundプロパティで設定します。例:

android:background="@drawable/rounded_corner"

これがお役に立てば幸いです。


16
答えは正しいです。投稿した人が詳細に説明しなかっただけです。xmlを作成する必要があります[eg。上記のコードを使用して、drawableフォルダー内のrounded_view.xml]。そして、textviewを取り巻くレイアウトで、これをパラメーターとして配置します。android:background = "@ drawable / rounded_view"
Sharjeel Ahmed

4
android:background = "@ drawable / rounded_corner"はここでは拡張機能を使用しないでください!
ボリス・ガフロフ2015

4
android:shape="rectangle"
うまくいかなかった

そして、プロジェクトが自動的に機能しなかった場合は、プロジェクトを再構築します
adek111

18

横にradius、ラウンドコーナーにはいくつかのプロパティがありますようにtopRightRadiustopLeftRadiusbottomRightRadiusbottomLeftRadius

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>link)を使用して、古い背景と新しい角の丸い背景の両方を組み合わせた新しい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. Drawableフォルダーを右クリックして新しいファイル作成
  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

2つのステップがあります

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でも使用できます。


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

Material Components Libraryを使用すると、を使用できます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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.