Фоновое изображение с закругленным дном в XML android - PullRequest
0 голосов
/ 30 сентября 2019

Desired Implementation

Я хотел добавить изображение в качестве фона моего линейного макета, и я знаю, что атрибут будет android: background = "@ drawable / login_bg", но сейчасМне нужно создать файл ресурсов для рисования, и в этом файле я хочу, чтобы нижняя левая и нижняя правая стороны были округлены, а верхняя левая и правая стороны были прямоугольными. Помните: мне нужно изображение внутри фона с закругленными углами.

Я пробовал эту ссылку

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

 <item>
        <shape android:shape="rectangle" android:padding="10dp">
            <corners
                android:bottomRightRadius="15dp"
                android:bottomLeftRadius="15dp"
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"/>
        </shape>
    </item>
    <item android:drawable="@drawable/login_bg" />
</layer-list>

1 Ответ

0 голосов
/ 30 сентября 2019

Попробуйте использовать это пользовательское представление. Но вы должны изменить с Android: фон на Android: SRC

class RadiusImageView: AppCompatImageView {

private val clipPath = Path()

constructor(context: Context) : super(context) {}

constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}

constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) {}

override fun onDraw(canvas: Canvas) {
    //float radius = 36.0f;

    val rect = RectF(0f, 0f, width.toFloat(), height.toFloat())

    // 4 Pair of radius : top-left, top -right, bottom-right, bottom left, each pair is radius 
    // for rx and ry for each corner
    clipPath.addRoundRect(rect, floatArrayOf(0f,0f,0f,0f,40f,40f,40f,40f) Path.Direction.CW)

    canvas.clipPath(clipPath)

    super.onDraw(canvas)
}

}

...