2

最初に私のページのLayoutについてお伝えします。私のButtonLinearLayoutの中にあります。私はButtonlayout_height = "0dp"のようにweightSumを使用しています。Button Image DrawableLeftを変更すると、プログラムでアンドロイドで動作しない

これは私のButtonプロパティです。その中

<Button 
    android:id="@+id/imagebutton_shape_round" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_marginBottom="1dp" 
    android:layout_marginLeft="1dp" 
    android:layout_marginRight="1dp" 
    android:layout_weight="1.0" 
    android:background="@color/button_background" 
    android:gravity="center" 
    android:drawableLeft="@drawable/round" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    /> 

私はOnclickListenerを設定し、それがBackGroundColorなどImageです変更したい.Now roundある名前ButtonImageを設定しています。

Button imagebutton_shape_round = (Button) findViewById(R.id.imagebutton_shape_round); 
      imagebutton_shape_round.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
        imagebutton_shape_round.setCompoundDrawables(getResources().getDrawable(R.drawable.white_round, getApplicationContext().getTheme()), null, null, null); 
        } 
       else { 
        imagebutton_shape_round.setCompoundDrawables(getResources().getDrawable(R.drawable.white_round), null, null, null); 
        } 

       imagebutton_shape_round.setBackgroundColor(ContextCompat.getColor(InventoryActivity.this,R.color.linearlayout_background)); 
       } 
      }); 

あなたは私たちは、このコードを使用してdrawableLeftを設定することができます見ることができるように。

Drawable img = getContext().getResources().getDrawable(R.drawable.smiley); 
txtVw.setCompoundDrawablesWithIntrinsicBounds(img, null, null, null); 

How to programmatically set drawableLeft on Android button?

しかし、私のコードgetDrawableが表示deprecatedである理由else一部。

私はIf conditiongetResources().getDrawable(R.drawable.white_round, getApplicationContext().getTheme()), null, null, null))

に、なぜ私はこれを使用していますことを、このlink

を参照してくださいそれ以外の部分は

getResources().getDrawable(R.drawable.white_round), null, null, null); 

アップデート機能しません。代わりにこの

を使用する

をそれはIf else条件

ContextCompat.getDrawable(InventoryActivity.this,R.drawable.white_round) 

を削除するので、私はこれを使っ

私は二Image iはImageが変更されていない]をクリックしたときに表示手段ではありませんクリックすると、今だけの問題の一つは、

があります。

答えて

1

APIが廃止され、代わりに新しいAPIが古いデバイスと互換性がある場合は、ビルドバージョンの条件を指定する必要はありません。

私はあなたがこのいずれかを使用してonClickコードスニペットを置き換えてみてください、私は `else`場合、それは直接`コールは、APIが必要な21現在の分が15 'であると言うを削除すると、それは

Drawable image = ResourcesCompat.getDrawable(R.drawable.white_round); 
int h = image.getIntrinsicHeight(); 
int w = image.getIntrinsicWidth(); 
image.setBounds(0, 0, w, h); 
imagebutton_shape_round.setCompoundDrawables(image, null, null, null); 
imagebutton_shape_round.setBackgroundColor(ContextCompat.getColor(InventoryActivity.this,R.color.linearlayout_background)); 
+0

を動作するかどうかを確認すべきだと思います。これはうまくいきません。 – Ironman

+0

私は自分の質問を参照して更新してください。 – Ironman

関連する問題