136

ボーダーを丸くしたレイアウトを作りたいです。で特定のサイズの半径を適用するにはどうすればよいLinearLayoutですか?

4

5 に答える 5

307

drawable フォルダーに XML ファイルを作成できます。たとえば、shape.xml

shape.xml

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"   >
    
    <solid
        android:color="#888888" >
    </solid>
    
    <stroke
        android:width="2dp"
        android:color="#C4CDE0" >
    </stroke>
     
    <padding
        android:left="5dp"
        android:top="5dp"
        android:right="5dp"
        android:bottom="5dp"    >
    </padding>
     
    <corners
        android:radius="11dp"   >
    </corners>
     
</shape>

タグは特定の<corner>質問用です。

必要に応じて変更します。

そしてあなたのwhatever_layout_name.xml

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="5dp"
    android:background="@drawable/shape"    >
</LinearLayout>

これは、私がアプリで通常行っていることです。

于 2012-04-09T14:20:17.543 に答える
11

レイアウトの背景としてShapeDrawableを使用し、そのcornerRadiusを設定し ます。詳細なチュートリアルについては、このブログを確認してください

于 2012-04-09T13:57:50.650 に答える
0

画像の操作には Glide モジュールを使用してみてください。次のように実装する必要があります。

implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'

これがフラグメントでの私のユースケースです。ここで、定数から画像の URL を取得します。次に、角の半径を 16 に設定します。次に、結果の背景を LinearLayout に設定します。

        Glide.with(this).load(Constants.FLAT_IMAGE).apply(RequestOptions.bitmapTransform(
        RoundedCorners(16)
    )).into(object :
        CustomTarget<Drawable>() {
        override fun onLoadCleared(placeholder: Drawable?) {
            super.onLoadStarted(placeholder)
        }

        override fun onResourceReady(
            resource: Drawable,
            transition: Transition<in Drawable>?
        ) {
            binding.llPromoDreamFlatImage.background = resource
        }
    })

このようにして、背景画像を画像または LinearLayout の丸みを帯びた色として設定できます。これが私の例です:

        <LinearLayout
        android:id="@+id/llPromoDreamFlatImage"
        android:layout_width="match_parent"
        android:layout_height="420dp"
        android:layout_marginTop="35dp"
        android:layout_gravity="center"
        android:gravity="center"
        >
于 2021-07-16T09:33:15.613 に答える