ビューの背景を描画可能にしたい。これには(私が見る限り)2つの方法があります:setBackground
とsetBackgroundDrawable
。
私はsetBackground
を使用するとき、それはAPIレベル16に追加されたと言いますが、私のプロジェクトの最小SDKバージョンは7です。 16未満の何か、私は正しいですか?しかし、私がsetBackgroundDrawableを使用するとき、それはそれが非推奨であると言います。
何を使うべきですか?
推奨されていませんが、まだ機能するのでそのまま使用できます。しかし、あなたが完全に正しいものにしたいのなら、それを完全にするためだけに...あなたは次のようなことをするでしょう:
int sdk = Android.os.Build.VERSION.SDK_INT;
if(sdk < Android.os.Build.VERSION_CODES.JELLY_BEAN) {
setBackgroundDrawable();
} else {
setBackground();
}
これがうまくいくためにはbuildTarget api 16とmin buildを7かそれに似たものに設定する必要があります。
代わりにsetBackgroundResource()
を使用できます。これはAPIレベル1です。
ソースコード に示されているように、現在2つの関数の間に違いはないようです(クレジットこの投稿へ):
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
したがって、fill-parent vs match-parentを使用した場合と同様に、これは命名の決定にすぎません。
私はこれが古い質問であることを知っていますが、私は同様の状況を持っています、そして私の解決策は
button.setBackgroundResource( R.drawable.ic_button );
Drawable d = button.getBackground();
それからあなたは「Drawable」で遊ぶことができます、カラーフィルタなどを適用すること
ViewCompat.setBackground(view, background);
を使う
代わりにsetBackgroundResource()
を使うこともできます。すなわちrelativeLayout.setBackgroundResource(R.drawable.back);
これは私のために働きます。
今、あなたはそれらのオプションのどちらかを使うことができます。そしてそれはどんな場合でもうまくいくでしょう。あなたの色は、このように16進数コードにすることができます。
myView.setBackgroundResource(ContextCompat.getColor(context, Color.parseColor("#FFFFFF")));
次のようなカラーリソース
myView.setBackgroundResource(ContextCompat.getColor(context,R.color.blue_background));
またはカスタムxmlリソース、のように:
myView.setBackgroundResource(R.drawable.my_custom_background);
お役に立てば幸いです!
Android Studio 1.5.1を使用すると、以下のような警告が表示されます。
Call requires API level 16 (current min is 9): Android.view.View#setBackground
と廃止に関する苦情
'setBackgroundDrawable(Android.graphics.drawable.Drawable)' is deprecated
このフォーマットを使用して、私は両方を取り除きました:
if (Android.os.Build.VERSION.SDK_INT < Android.os.Build.VERSION_CODES.JELLY_BEAN) {
//noinspection deprecation
layout.setBackgroundDrawable(drawable);
} else {
layout.setBackground(drawable);
}
SetBackgroundResource(R.drawable.xml/png)を使用してください。
ビューを見るはあなたのeditText、spinnerなどです。そして、int drawableが描画可能なルートの例です(R.drawable.yourDrawable)。
public void verifyDrawable (View view, int drawable){
int sdk = Build.VERSION.SDK_INT;
if(sdk < Build.VERSION_CODES.JELLY_BEAN) {
view.setBackgroundDrawable(
ContextCompat.getDrawable(getContext(),drawable));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.setBackground(getResources().getDrawable(drawable));
}
}