角の丸いビューを作成するにはどうすればよいですか?


92

丸みを帯びたエッジでアンドロイドでビューを作成しようとしています。これまでに見つけた解決策は、角が丸い形状を定義し、そのビューの背景として使用することです。

これが私がしたことです、以下のようにドローアブルを定義します:

<padding
android:top="2dp"
android:bottom="2dp"/>
<corners android:bottomRightRadius="20dp"
android:bottomLeftRadius="20dp"
android:topLeftRadius="20dp"
android:topRightRadius="20dp"/>

今、私はこれを私のレイアウトの背景として以下のように使用しました:

<LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="10dp"
        android:clipChildren="true"
        android:background="@drawable/rounded_corner">

これは完璧に機能し、ビューのエッジが丸くなっていることがわかります。

しかし、私のレイアウトには、ImageViewやといった他の多くの子ビューがありMapViewます。私は配置するとImageView上記のレイアウトの内側に、画像の四隅ではなく、それがフル表示され、トリミング/クリップされていません。

ここで説明さているように機能させるために、他の回避策を見てきました

しかし、ビューに丸みを帯びたコーナーを設定する方法はありますか?そのすべての子ビューは、丸みを帯びたコーナーを持つメインビュー内に含まれていますか?


LinearLayoutに拡張されたカスタムレイアウトを使用し、そのオブジェクトが作成されている間に、そのレイアウトのすべての子を反復処理し、それらに丸い境界線の背景を適用するとどうなりますか?
MysticMagicϡ

3
android.support.v7.widget.CardViewがこの解決策のようです
ロケットスペーサー

このソリューションは私のためにそれを解決しましたが、サブクラス化が必要です:https
Aaron

これはあなたの質問に答えますか?画像の丸みを帯びた画像のアンドロイドに
枠線を

回答:


127

別のアプローチは、以下のようなカスタムレイアウトクラスを作成することです。このレイアウトは、最初にそのコンテンツをオフスクリーンビットマップに描画し、丸みを帯びた四角形でオフスクリーンビットマップをマスクしてから、実際のキャンバス上にオフスクリーンビットマップを描画します。

私はそれを試しました、そしてそれは(少なくとも私の単純なテストケースでは)うまくいくようです。もちろん、通常のレイアウトと比較してパフォーマンスに影響します。

package com.example;

import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.widget.FrameLayout;

public class RoundedCornerLayout extends FrameLayout {
    private final static float CORNER_RADIUS = 40.0f;

    private Bitmap maskBitmap;
    private Paint paint, maskPaint;
    private float cornerRadius;

    public RoundedCornerLayout(Context context) {
        super(context);
        init(context, null, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context, attrs, defStyle);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        cornerRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, CORNER_RADIUS, metrics);

        paint = new Paint(Paint.ANTI_ALIAS_FLAG);

        maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
        maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

        setWillNotDraw(false);
    }

    @Override
    public void draw(Canvas canvas) {
        Bitmap offscreenBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas offscreenCanvas = new Canvas(offscreenBitmap);

        super.draw(offscreenCanvas);

        if (maskBitmap == null) {
            maskBitmap = createMask(canvas.getWidth(), canvas.getHeight());
        }

        offscreenCanvas.drawBitmap(maskBitmap, 0f, 0f, maskPaint);
        canvas.drawBitmap(offscreenBitmap, 0f, 0f, paint);
    }

    private Bitmap createMask(int width, int height) {
        Bitmap mask = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8);
        Canvas canvas = new Canvas(mask);

        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.WHITE);

        canvas.drawRect(0, 0, width, height, paint);

        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        canvas.drawRoundRect(new RectF(0, 0, width, height), cornerRadius, cornerRadius, paint);

        return mask;
    }
}

これを通常のレイアウトのように使用します。

<com.example.RoundedCornerLayout
    android:layout_width="200dp"
    android:layout_height="200dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/test"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#ff0000"
        />

</com.example.RoundedCornerLayout>

1
私はこのレイアウトを内部にズーム機能のあるimageviewに使用していますが、ズームしようとすると、このレイアウトはタッチリスナーを検出できません。このレイアウトにタッチリスナー機能を追加するにはどうすればよいですか?
ムハンマドナフィアンワイルダナ2015年

2
私はこの方法を使用し、問題なく動作しました。しかし、レイアウト内にEditTextを配置すると、入力しても画面が更新されません。ウィンドウを閉じると、テキストが表示されます。キーボードを閉じると画面が更新されます。これに対する修正はありますか?
Sajib Acharya、2015年

1
Recyclerビューで使用する場合の唯一の問題は、アイテムの完全なセットが読み込まれるのを待たないことです。そして、ほんのいくつかのアイテムを丸めます。これが起こる理由はありますか?
アーメド

2
これは、プレースホルダー遷移を使用するグライドライブラリから読み込まれた画像(または実際には他のアニメーション化された子)では機能しません。別の解決策がありますが、背景色を無地にする必要があります。gist.github.com/grennis/da9f86870c45f3b8ae00912edb72e868を
グレッグエニス

2
細かくて便利なソリューションですが、高すぎます。1つの画像を含む要素が6つしかないRecyclerViewは、スムーズにスクロールできません。また、デバイスの電源には依存しません(Samsung S9またはWileyfox Swift 2)。 stackoverflow.com/a/41098690/4399323がより良い答えです!
Valentin Yuryev 2018

71

または、次のandroid.support.v7.widget.CardViewように使用できます。

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    card_view:cardBackgroundColor="@color/white"
    card_view:cardCornerRadius="4dp">

    <!--YOUR CONTENT-->
</android.support.v7.widget.CardView>

私は非常に多くの方法を試しましたが、あなたの方法が私の問題に対する最善の解決策です。ありがとう!
wizChen

標高を削除できません。設計に標高が必要な場合は問題なく機能します。
Abdalrahman Shatou

1
@AbdalrahmanShatou developer.android.com/reference/android/support/v7/widget/...そのためのプロパティがあります。それらを「0」に設定してみましたか?
ロケットスペーサー

5
1つの欠点は、<21のAndroid APIをサポートしていないことです
Itai Spector

50

shape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

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

    <stroke
        android:width="2dp"
        android:color="#000000" />

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

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

</shape>

そしてあなたの内部のレイアウト

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="10dp"
        android:clipChildren="true"
        android:background="@drawable/shape">

        <ImageView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:src="@drawable/your image"
             android:background="@drawable/shape">

</LinearLayout>

3
@ザック:どのように機能しなかったのですか?元の質問をしたときのアプリの動作と同じですか?
LarsH 16

2
clipChildrenは役に立たず、画像ビューはビューの外に広がります。
Abdalrahman Shatou

1
私はあなたにそのための恵みを与えたいと思います。ありがとう
Odys

3
画像が長方形の場合は、背景が画像のコンテンツの背後に描画されるため、このアプローチはうまくいかないと思います。これは、透明度があり、角が丸い画像でのみ機能する場合があります。
Harsha Vardhan

21

Jaap van Hengstumの答えはうまくいきますが、それは高価だと思います。たとえば、このメソッドをButtonに適用すると、ビューがビットマップとしてレンダリングされるため、タッチ効果が失われます。

私にとって最良の方法と最も簡単な方法は、次のようにビューにマスクを適用することです:

@Override
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
    super.onSizeChanged(width, height, oldWidth, oldHeight);

    float cornerRadius = <whatever_you_want>;
    this.path = new Path();
    this.path.addRoundRect(new RectF(0, 0, width, height), cornerRadius, cornerRadius, Path.Direction.CW);
}

@Override
protected void dispatchDraw(Canvas canvas) {
    if (this.path != null) {
        canvas.clipPath(this.path);
    }
    super.dispatchDraw(canvas);
}

これの使い方は?
Maksim Kniazev 2017年

@MaksimKniazev必要なレイアウトのサブクラスを作成し(例:FrameLayout)、これらの2つのメソッドをこのサブクラスに貼り付け、「<whatever_you_want>」を目的のコーナー半径値(リソースなどから)に置き換えます。それでおしまい。それはあなたにとって十分明確ですか、それとも例が必要ですか?
ロバ

本当にありがとうございます。RecyclerViewの方が効果的です。
Valentin Yuryev 2018

18

レイアウトにタッチリスナーを追加しているときに問題が発生した場合。このレイアウトを親レイアウトとして使用します。

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.Region;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
import android.widget.FrameLayout;

public class RoundedCornerLayout extends FrameLayout {
    private final static float CORNER_RADIUS = 6.0f;
    private float cornerRadius;

    public RoundedCornerLayout(Context context) {
        super(context);
        init(context, null, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context, attrs, defStyle);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        cornerRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, CORNER_RADIUS, metrics);
        setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }


    @Override
    protected void dispatchDraw(Canvas canvas) {
        int count = canvas.save();

        final Path path = new Path();
        path.addRoundRect(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), cornerRadius, cornerRadius, Path.Direction.CW);
        canvas.clipPath(path, Region.Op.REPLACE);

        canvas.clipPath(path);
        super.dispatchDraw(canvas);
        canvas.restoreToCount(count);
    }


}

なので

<?xml version="1.0" encoding="utf-8"?>
<com.example.view.RoundedCornerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/patentItem"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingRight="20dp">
        ... your child goes here
    </RelativeLayout>
</com.example.view.RoundedCornerLayout>

2
画面にアニメーションがあまりなく、画面が何度も描画される場合は、うまく機能します。そのため、パフォーマンスが大幅に低下します。効率的なラウンドコーナーメソッドを備えたカードビューを試す必要があります(クリッピングパスやcanvas.drawRoundRectを使用しない-API 17以下では無効ですが、porterFilterDuffColorを使用してください)
Nguyen Tan Dat

15

XMLファイルを作成round.xmlしてdrawableフォルダをし、このコンテンツを貼り付けます。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <solid android:color="#FFFFFF" />
  <stroke android:width=".05dp" android:color="#d2d2d2" />
  <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp"/>
</shape>

次に、任意のアイテムに対してround.xmlas backgroundを使用します。次に、角が丸くなります。


9

Android Lでは、View.setClipToOutlineを使用するだけでその効果を得ることができます。以前のバージョンでは、ランダムなViewGroupのコンテンツを特定の形でクリップするだけの方法はありませんでした。

あなたはあなたに同様の効果を与える何かを考える必要があります:

  • ImageViewで丸い角だけが必要な場合は、シェーダーを使用して、背景として使用している形状の上に画像を「ペイント」できます。例として、このライブラリを見てください。

  • 本当にすべての子をクリップする必要がある場合、レイアウトを別の視点で見ることができますか?使用している色の背景があり、真ん中に丸い「穴」がありますか?実際に、onDrawメソッドをオーバーライドするすべての子の上にその形状を描画するカスタムViewGroupを作成できます。


3

このチュートリアルとその下のすべてのディスカッションに従ってください- http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/

Android UIツールキット全体の主要開発者の1人であるGuy Romainが書いたこの投稿によると、角の丸いコンテナ(およびそのすべての子ビュー)を作成することは可能ですが、(パフォーマンスが高いため)レンダリングの問題)。

彼の投稿に従って進むことをお勧めします。丸みを帯びたコーナーが必要な場合はImageView、この投稿に従って丸みを帯びたコーナーを実装します。次に、それを任意の背景を持つコンテナ内に配置すると、希望する効果が得られます。

それも結局私がやったことです。


3

次のandroidx.cardview.widget.CardViewように使用できます:

<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"       
        app:cardCornerRadius="@dimen/dimen_4"
        app:cardElevation="@dimen/dimen_4"
        app:contentPadding="@dimen/dimen_10">

       ...

</androidx.cardview.widget.CardView>

または

shape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

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

    <stroke
        android:width="2dp"
        android:color="#000000" />

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

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

</shape>

そしてあなたの内部のレイアウト

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/shape">

        ...

</LinearLayout>

3

ドローアブルフォルダーの下に次のコードでxmlファイルを作成します。(私が作成したファイルの名前はrounded_corner.xmlです)

rounded_corner.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">

        <!-- view background color -->
        <solid
            android:color="#a9c5ac" >
        </solid>

        <!-- view border color and width -->
        <stroke
            android:width="3dp"
            android:color="#1c1b20" >
        </stroke>

        <!-- If you want to add some padding -->
        <padding
            android:left="4dp"
            android:top="4dp"
            android:right="4dp"
            android:bottom="4dp"    >
        </padding>

        <!-- Here is the corner radius -->
        <corners
            android:radius="10dp"   >
        </corners>
    </shape>

そして、あなたが丸い角のボーダーを保持したいビューに関してはこれdrawableを維持backgroundしてください。それを保ちましょうLinearLayout

    <LinearLayout android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/rounded_corner"
            android:layout_centerInParent="true">

            <TextView android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Hi, This layout has rounded corner borders ..."
                android:gravity="center"
                android:padding="5dp"/>

    </LinearLayout>

3

CardViewAndroidのメーカー3.0.1にAPI 27で私のために働きました。colorPrimaryで参照されたres/values/colors.xmlファイルと、あくまでも一例です。そのため、layout_widthは0dp親の幅に拡大されます。必要に応じて、制約と幅/高さを構成する必要があります。

<android.support.v7.widget.CardView
    android:id="@+id/cardView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:cardCornerRadius="4dp"
    app:cardBackgroundColor="@color/colorPrimary">

    <!-- put your content here -->

</android.support.v7.widget.CardView>

2

Jaap van Hengstumの回答との違い:

  1. BitmapShaderを使用するマスクビットマップの代わりにをます。
  2. ビットマップを一度だけ作成します。
public class RoundedFrameLayout extends FrameLayout {
    private Bitmap mOffscreenBitmap;
    private Canvas mOffscreenCanvas;
    private BitmapShader mBitmapShader;
    private Paint mPaint;
    private RectF mRectF;

    public RoundedFrameLayout(Context context) {
        super(context);
        init();
    }

    public RoundedFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public RoundedFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        setWillNotDraw(false);
    }

    @Override
    public void draw(Canvas canvas) {
        if (mOffscreenBitmap == null) {
            mOffscreenBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
            mOffscreenCanvas = new Canvas(mOffscreenBitmap);
            mBitmapShader = new BitmapShader(mOffscreenBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
            mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            mPaint.setShader(mBitmapShader);
            mRectF = new RectF(0f, 0f, canvas.getWidth(), canvas.getHeight());
        }
        super.draw(mOffscreenCanvas);

        canvas.drawRoundRect(mRectF, 8, 8, mPaint);
    }
}

2
public class RoundedCornerLayout extends FrameLayout {
    private double mCornerRadius;

    public RoundedCornerLayout(Context context) {
        this(context, null, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public RoundedCornerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context, attrs, defStyle);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }

    public double getCornerRadius() {
        return mCornerRadius;
    }

    public void setCornerRadius(double cornerRadius) {
        mCornerRadius = cornerRadius;
    }

    @Override
    public void draw(Canvas canvas) {
        int count = canvas.save();

        final Path path = new Path();
        path.addRoundRect(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), (float) mCornerRadius, (float) mCornerRadius, Path.Direction.CW);
        canvas.clipPath(path, Region.Op.REPLACE);

        canvas.clipPath(path);
        super.draw(canvas);
        canvas.restoreToCount(count);
    }
}

2

Material Components Library Viewを使用して、角の丸いを作成する最良の方法は、を使用することMaterialShapeDrawableです。

カスタムの丸い角を持つShapeAppearanceModelを作成します。

ShapeAppearanceModel shapeAppearanceModelLL1 = new ShapeAppearanceModel()
        .toBuilder()
        .setAllCorners(CornerFamily.ROUNDED,radius16)
        .build();

を作成MaterialShapeDrawable

MaterialShapeDrawable shapeDrawableLL1 = new MaterialShapeDrawable(shapeAppearanceModeLL1);

ダークテーマにelevationOverlayも適用したい場合は、これを使用してください:

MaterialShapeDrawable shapeDrawableLL1 = MaterialShapeDrawable.createWithElevationOverlay(this, 4.0f);
shapeDrawableLL1.setShapeAppearanceModel(shapeAppearanceModelLL1);

オプション:shapeDrawableに背景色とストロークを適用します

shapeDrawableLL1.setFillColor(
       ContextCompat.getColorStateList(this,R.color...));
 shapeDrawableLL1.setStrokeWidth(2.0f);
 shapeDrawableLL1.setStrokeColor(
       ContextCompat.getColorStateList(this,R.color...));

最後に、shapeDrawableをLinearLayout(または他のビュー)の背景として適用します。

LinearLayout linearLayout1= findViewById(R.id.ll_1);
ViewCompat.setBackground(linearLayout1,shapeDrawableLL1);

ここに画像の説明を入力してください


1

提供したチュートリアルリンクは、子要素のlayout_widthプロパティとlayout_heightプロパティをmatch_parentに設定する必要があることを示唆しているようです。

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

0

このプロパティを線形レイアウトで試してみてください
:ツールに役立ちます:context = "。youractivity"


0
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {

        Bitmap roundedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(roundedBitmap);

        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;

        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);

        return roundedBitmap;
    }

0

com.google.android.material:material:1.2.0-beta01を使用して角の丸い画像を作成するには

 float radius = context.getResources().getDimension(R.dimen.border_radius_hug);
    shapeAppearanceModel = new ShapeAppearanceModel()
            .toBuilder()
            .setAllCorners(CornerFamily.ROUNDED,radius)
            .build();

imageView.setShapeAppearanceModel(shapeAppearanceModel)

または、xmlファイルで使用する場合:

  <com.google.android.material.imageview.ShapeableImageView
            android:id="@+id/thumb"
            android:layout_width="80dp"
            android:layout_height="60dp"
            app:shapeAppearanceOverlay="@style/circleImageView"
            />

これをstyle.xmlに追加:

<style name="circleImageView" parent="">
      <item name="cornerFamily">rounded</item>
      <item name="cornerSize">10%</item>
</style>

-1

xmlでShapeを使用し、rectangle.setの下部または上部半径のプロパティを必要に応じて使用します。次に、そのxmlを背景としてurビューに適用します。...または...グラデーションを使用してコードから実行します。


私はすでにそれをしましたが、より良い方法があるかどうか知りたいですか?
Zach

要求者は彼の質問でこのアプローチを試みることをすでに述べました。
Michael Krause 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.