Подтвердить что ты не робот

Создать программный фон андроида

в нашем приложении я могу создать простой xml для формы, чтобы использовать его в фоне виджетов Android. в моих xml углах и цвет должен быть другим, и я не люблю создавать некоторые xml с некоторыми цветами или углами. как создать эту форму программно?

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

    <solid android:color="#e67e22" /> 
    <corners
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp"
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
         />
</shape>

например, у меня есть простая функция, чтобы получить угол, цвет и установить, чтобы форма

мой код:

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.category_header);

    GradientDrawable drawable = (GradientDrawable) linearLayout.getDrawable();

    float[] values = { 0.2f, 0.2f, 0.2f, 0.2f };
    drawable.setCornerRadii(values);

Ошибка:

The method getDrawable() is undefined for the type LinearLayout
4b9b3361

Ответ 1

Вы можете сделать это так:

public static void customView(View v, int backgroundColor, int borderColor)
{
    GradientDrawable shape = new GradientDrawable();
    shape.setShape(GradientDrawable.RECTANGLE);
    shape.setCornerRadii(new float[] { 8, 8, 8, 8, 0, 0, 0, 0 });
    shape.setColor(backgroundColor);
    shape.setStroke(3, borderColor);
    v.setBackgroundDrawable(shape);
}

Смотрите документацию для значения setCornerRadii.

Вы можете использовать эту функцию во всем приложении и можете поместить цвет границы и фона по вашему выбору.