6

ドローアブルで背景が定義されたレイアウトがあり、ある条件下でそれを別の条件に変更したいと考えています。現在の背景の識別子を取得して、それが何であるかを知るにはどうすればよいですか?

4

4 に答える 4

12

これは非常に古い質問かもしれませんが、まだ探している人がいる場合に備えて:

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

  //do something if this is the correct drawable
}

null をチェックすることを思い出してください。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));

そして、最初の背景に戻したい場合は、Drawable 全体があるため、ID は必要ありません。 view.setBackgroundDrawable(beforeClickDrawalbe));

それで全部です!

于 2013-03-17T10:46:33.113 に答える