2017-01-16 10 views
0

Я пытаюсь установить фоновое изображение с возможностью рисования в relativelayout, которое у меня есть. Я использую setBackground, и он запрашивает для drawable не int. Я могу сделать его доступным, и он все еще дает мне ошибку. Вот раздел моего кода.Попытка установить фоновое изображение relativelayout

rl.setBackground(R.drawable.loginbackground3); 

Это ошибка, которую я получаю.

setBackground (android.graphics.drawable.Drawable) in View cannot be applied to (int). 

Очень запутался, пожалуйста, помогите?

ответ

1

Попробуйте это:

rl.setBackgroundResource(R.drawable.loginbackground3); 

или если вы хотите сделать в вашем случае вам нужно проверить версию сборки (если вы создаете для более низкой версии).

final int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    rl.setBackgroundDrawable(getResources().getDrawable(R.drawable.loginbackground3)); 
} else { 
    rl.setBackground(getResources().getDrawable(R.drawable.loginbackground3)); 
} 
+0

Я попытался использовать rl.setBackgroundResource (R.drawable.loginbackground3); И я не получаю никаких ошибок, но это не работает. Ничего не произошло. Фон не меняется –

1

Вам необходимо загрузить выталкиваемый с использованием этой ссылочной ссылки.

Drawable background = rl.getContext().getResources().getDrawable(R.drawable.loginbackground3); 
rl.setBackground(background); 

Обратите внимание, что если вы используете библиотеки поддержки вы можете решить устаревание из getDrawable как так:

Drawable background = ContextCompat.getDrawable(rl.getContext(), R.drawable.loginbackground3); 
rl.setBackground(background); 
+0

Im получаю ошибку на линии:.. Рисуем фон = rl.getContext() GetResources() getDrawable (R.drawable.loginbackground3); Ошибка: android.content.Context android.widget.RelativeLayout.getContext() 'на ссылке нулевого объекта –

0

// предполагается, что ваш макет называется relativelayout1:

RelativeLayout r1 = (RelativeLayout) findViewById(R.id.relativelayout1); 
r1.setBackgroundResource(R.drawable.sample); 
0

Из-за несогласованности библиотеки из самого андроида, Во-первых, вам нужно создать метод getDrawable:

private Drawable getDrawable(int id) { 
    final int sdk = android.os.Build.VERSION.SDK_INT; 
    if (sdk >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
    return ContextCompat.getDrawable(getContext(), id); 
    } else { 
    return getContext().getResources().getDrawable(id); 
    } 
} 

Тогда , создать метод setBackgroundView:

private void setBackgroundView(View v, int drawable_Rid) { 
    Drawable background = getDrawable(drawable_Rid); 
    final int sdk = android.os.Build.VERSION.SDK_INT; 
    if (sdk >= android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    v.setBackground(background); 
    } else { 
    v.setBackgroundDrawable(background); 
    } 
} 

И, наконец, назвать setBackgroundView с растяжимой именем, как это:

setBackgroundView(rl, R.drawable.loginbackground3);