Изменение цвета фона во время выполнения Android - PullRequest
0 голосов
/ 22 февраля 2019

Я использую LinearLayout, чтобы установить форму BackGround, которая имеет угловой угол.Я создал нарисованный XML-файл.Когда я пытаюсь изменить цвет LinearLayout backGround в RunTime в My Activity, появляется цвет, который отражается в макете, но форма фона не применяется.Нужна помощь по этому

моему файлу layout.xml:

<RelativeLayout        
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                   
            android:id="@+id/month_card"
            android:backgroundTint="@drawable/circle_corner_rectangle"
            app:backgroundTintMode="src_over">

файлу shape.xml

<shape android:shape="rectangle"  >
    <corners android:radius="500dip" />
    <stroke android:width="2dip" android:color="@color/colorPrimary" />
    <gradient android:angle="-90"/>
</shape>

Наконец, установите его во время выполнения внутри действия

layout.setBackgroundColor(colorList.get(position));

Ответы [ 5 ]

0 голосов
/ 22 февраля 2019

Попробуйте это:

        Drawable drawable = yourView.getBackground();

        try {
            drawable.setColorFilter(Color.parseColor(yourColor), PorterDuff.Mode.MULTIPLY);
        } catch (Exception e) {
            e.printStackTrace();
        }
0 голосов
/ 22 февраля 2019

Просто попробуйте это,

   layout.setBackgroundColor(Color.parseColor("#20A4E8"));
  (or)
   layout.setBackgroundColor(Color.BLUE);

просто добавьте еще один XML-файл, который вы хотите, и добавьте этот код во время выполнения

   layout.setBackgroundTintList(getContext.getResources().getColorStateList(R.color.your_xml_name));
0 голосов
/ 22 февраля 2019

Используйте

    final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.circle_corner_rectangle) 
);
} else {
    layout.setBackground(ContextCompat.getDrawable(context,R.drawable.circle_corner_rectangle));
}

вместо

layout.setBackgroundColor(colorList.get(position));
0 голосов
/ 22 февраля 2019

Может быть, это работает в вашем случае

        val shape = GradientDrawable()
        shape.shape = GradientDrawable.RECTANGLE
        shape.setStroke(mStrokeWidth!!,mStrokeColor!!)
        shape.cornerRadius = 2f
        imageView.background = shape

Этот код находится в kotlin

0 голосов
/ 22 февраля 2019

Попробуйте этот код

circle_corner_rectangle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#E0F2F1" />
    <corners android:radius="6dp"/>
</shape>

 <RelativeLayout        
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"                   
        android:id="@+id/month_card"
        android:backgroundTint="@drawable/circle_corner_rectangle">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...