325

背景を設定するには:

RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);

それを行う最良の方法はありますか?

4

15 に答える 15

562

layout.setBackgroundResource(R.drawable.ready);正しい。
それを達成する別の方法は、次を使用することです。

final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready) );
} else {
    layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
}

しかし、大きな画像を読み込もうとしているために問題が発生していると思います。これは、大きなビットマップをロードする方法についての優れたチュートリアルです


更新: API レベル 22 で
廃止された getDrawable(int ) は、API レベル 22


getDrawable(int )で廃止されました。代わりに、サポート ライブラリの次のコードを使用する必要があります。

ContextCompat.getDrawable(context, R.drawable.ready)

ContextCompat.getDrawableのソース コードを参照すると、次のようになります。

/**
 * Return a drawable object associated with a particular resource ID.
 * <p>
 * Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned
 * drawable will be styled for the specified Context's theme.
 *
 * @param id The desired resource identifier, as generated by the aapt tool.
 *            This integer encodes the package, type, and resource entry.
 *            The value 0 is an invalid identifier.
 * @return Drawable An object that can be used to draw this resource.
 */
public static final Drawable getDrawable(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 21) {
        return ContextCompatApi21.getDrawable(context, id);
    } else {
        return context.getResources().getDrawable(id);
    }
}

ContextCompatの詳細

API 22 以降ではgetDrawable(int, Theme)、getDrawable(int) の代わりに メソッドを使用する必要があります。

更新:
サポート v4 ライブラリを使用している場合は、すべてのバージョンで次の内容で十分です。

ContextCompat.getDrawable(context, R.drawable.ready)

アプリの build.gradle に以下を追加する必要があります

compile 'com.android.support:support-v4:23.0.0' # or any version above

または、以下のような任意の API で ResourceCompat を使用します。

import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
于 2012-09-21T01:23:56.193 に答える
116

これを試して:

layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));

API 16 <:

layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));
于 2012-09-21T01:09:00.770 に答える
1

バターナイフを使用して、これをクラスの先頭 (メソッドの前) に追加することにより、ドローアブル リソースを変数にバインドします。

@Bind(R.id.some_layout)
RelativeLayout layout;
@BindDrawable(R.drawable.some_drawable)
Drawable background;

次に、メソッドの1つの中に追加します

layout.setBackground(background);

それだけで十分です

于 2016-09-22T13:54:53.010 に答える
0

このコードを試してください:

Drawable thumb = ContextCompat.getDrawable(getActivity(), R.mipmap.cir_32);
mSeekBar.setThumb(thumb);
于 2016-12-28T06:44:25.850 に答える