颜色参数传递,及颜色在代码中动态显示

一个页面显示N张银行卡,每个卡显示颜色不应一样,之前是写死在xml文件中,但是后来下面卡的布局文件用同一个文件之后,下面的几张卡的颜色就一样了。



于是想到将卡的颜色作为卡要素(卡号,发卡行)这种参数进行传递过去,并且用int型表示颜色,设置两个配套的方法get(),set()


private int mBackGroundColor;

public int getBackgroundColor() {

return mBackgroundColor;

}

public void setBackgroundColor(int mBackgroundColor) {

this.mBackgroundColor = mBackgroundColor;

}


之后在设置卡时候添加:

appDeviceCard2.setBackgroundColor(getResources().getColor(R.color.pink));//卡颜色暂时写死

然后将设置卡要素(卡颜色,卡号)等写在以下方法中

    private View  getView(UPDeviceCardDetail devCard) {

View containerRoot=localinflater.inflate(R.layout.view_card_cloud, null);

containerRoot.setBackgroundColor(devCard.getBackgroundColor());

return containerRoot;//卡区域所有要素(已添加属性)

}

一个LinearLayout来表示多张卡的区域

mContainer = ((LinearLayout)findViewById(R..id.cards_container);

for(int i=0;i < cards.length;i++) {

   mContaniner.addView(getView(cards[i]), temp);//temp是该区域的一些宽高描述


接上文,昨天虽然实现了对颜色的动态控制,但是卡区域的圆角变没了,因为java代码会对xml布局样式进行覆盖。于是在getView()方法中,加入一个判断,利用Token来对卡进行区分,然后根据不同的Token来设置不同的颜色:


private View  getView(UPDeviceCardDetail devCard) {

View containerRoot=localinflater.inflate(R.layout.view_card_cloud, null);

containerRoot.setBackgroundColor(devCard.getBackgroundColor());

if (devCard.getToken().equals("62000000000000000000001")) {//卡1

containRoot.setBackGroundResource(R.drawable.button_bg2) ;

}else if (devCard.getToken().equals("62000000000000000000001")) {//卡2

containRoot.setBackGroundResource(R.drawable.button_bg3) ;

}

return containerRoot;//卡区域所有要素(已添加属性)

}

containRoot.setBackGroundResource(R.drawable.button_bg2) ;

你可能感兴趣的:(颜色参数传递,及颜色在代码中动态显示)