6

我有一个在drawable中定义背景的布局,我想在某些条件下将其更改为另一个。如何获取当前背景的标识符以知道它是什么?

4

4 回答 4

12

这可能是一个非常古老的问题,但以防万一人们仍在寻找它:

if(yourView.getBackground().getConstantState().equals(
    getResources().getDrawable(R.drawable.yourdrawable).getConstantState()){

  //do something if this is the correct drawable
}

提醒检查是否为空。在某些情况下,yourView.getBackground()如果源是矢量可绘制的,则可以返回 null。

于 2016-08-30T04:51:36.713 回答
3

嗨,你可以试试这个例子,

btnNew =(Button)findViewById(R.id.newButton); 

 // compare newlist
if(newButton.getBackground()!=(findViewById(R.id.imgAdd)).getBackground()) 
{ 
   btnNew.setBackgroundResource(R.drawable.imgDelete); 
}
于 2012-11-29T08:20:26.467 回答
1

你可以通过这种方式尝试。

将 id 分配给要根据条件更改背景的布局。并这样做

            linear1 = (LinearLayout) findViewById(R.id.bg_l_l);

        if(condition==true)
        {
            linear1.setBackgroundDrawable(R.drawable.sample_thumb_0);
        }
        else if (condition2==true)
        {
            linear1.setBackgroundDrawable(R.drawable.sample_thumb_1);
        }
        else
        {
            linear1.setBackgroundDrawable(R.drawable.sample_thumb_2);
        }
于 2012-11-29T08:25:43.770 回答
1

Drawable你可以简单地得到整个Drawable beforeClickDrawalbe=view.getBackground();

并通过执行以下操作更改视图的背景:view.setBackgroundDrawable(getResources().getDrawable(R.drawable.YOUR_DRAWABLE));

然后,如果您想将其设置回初始背景,则不需要 id,因为您拥有整个 Drawable,因此请执行以下操作: view.setBackgroundDrawable(beforeClickDrawalbe));

就这样!

于 2013-03-17T10:46:33.113 回答