有时候复用同一个布局文件,可以对其用代码设置不同的颜色,但是如果这个布局文件的background设置的是shape文件,那么设置颜色会导致这个shape文件失效,可以用如下方法设置:
View onel = one.findViewById(R.id.mCard); ((GradientDrawable) onel.getBackground()).setColor(Color.GRAY); View twol = two.findViewById(R.id.mCard); ((GradientDrawable) twol.getBackground()).setColor(Color.RED);
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:gravity="center" android:orientation="vertical" > <LinearLayout android:id="@+id/mCard" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:padding="20dp" android:gravity="center" android:background="@drawable/card_bg" android:orientation="vertical"> <TextView android:id="@+id/bank" android:gravity="center_vertical" android:paddingLeft="20dp" android:text="1111" android:layout_width="match_parent" android:layout_height="40dp" /> <TextView android:id="@+id/number" android:gravity="center_vertical" android:layout_marginTop="10dp" android:text="11111" android:layout_width="match_parent" android:layout_height="40dp" /> <TextView android:id="@+id/remain" android:text="1111" android:gravity="center_vertical|end" android:paddingRight="10dp" android:layout_width="match_parent" android:layout_height="40dp" /> </LinearLayout> </LinearLayout>
card_bg文件:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="10dp"/> <solid android:color="#00ffff"/> </shape>