Android常用shape定義View的背景,可以修改View的背景顏色,形狀等屬性
當遇到多種狀態(tài),對應多種顏色,寫多個shape就不高效了
這里用代碼來修改顏色的屬性
GradientDrawable myGrad = (GradientDrawable)view.getBackground();
myGrad.setColor(color);
貼一段項目中的代碼
var gradientDrawable = holder.itemView.tv_corpus_status.background as (GradientDrawable)
when (mList[position].checkStatus) {
"0" -> {
gradientDrawable.setColor(((mContext.get() as BaseActivity).mApp!!.resources.getColor(R.color.corpus_status_no_review)))
holder.itemView.tv_corpus_status.text = "未審核"
}
"1" -> {
gradientDrawable.setColor(((mContext.get() as BaseActivity).mApp!!.resources.getColor(R.color.corpus_status_review)))
holder.itemView.tv_corpus_status.text = "審核中"
}
"2" -> {
gradientDrawable.setColor(((mContext.get() as BaseActivity).mApp!!.resources.getColor(R.color.corpus_status_success)))
holder.itemView.tv_corpus_status.text = "通過"
}
"3" -> {
gradientDrawable.setColor(((mContext.get() as BaseActivity).mApp!!.resources.getColor(R.color.corpus_status_fail)))
holder.itemView.tv_corpus_status.text = "未通過"
}
}
shape的xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/d10" />
</shape>