ビューの背景ドローアブルを設定したい。これには 2 つの方法があります (私が見る限り):setBackground
とsetBackgroundDrawable
.
を使用すると、 API レベル 16setBackground
で追加されたと表示されますが、私のプロジェクトの SDK の最小バージョンは 7 です。しかし、setBackgroundDrawable を使用すると、非推奨と表示されます。
私は何を使うべきですか?
ビューの背景ドローアブルを設定したい。これには 2 つの方法があります (私が見る限り):setBackground
とsetBackgroundDrawable
.
を使用すると、 API レベル 16setBackground
で追加されたと表示されますが、私のプロジェクトの SDK の最小バージョンは 7 です。しかし、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 と match-parent の場合と同様に、単なる命名の決定です。
これは古い質問であることは知っていますが、同様の状況があり、私の解決策は
button.setBackgroundResource( R.drawable.ic_button );
Drawable d = button.getBackground();
次に、「Drawable」で遊んだり、カラーフィルターを適用したりできます
Androidスタジオ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);
}
私もこの問題を抱えていましたが、ImageViewを使用して回避策を作成しました。
RelativeLayoutを使用して、その中に ImageView を追加してみてください (幅と高さ: fill_parent、scaleType: center)。
また、imageview がRelativeLayout 内の最初の要素であることを確認して、背景として機能するようにします。