Quero definir o plano de fundo que pode ser desenhado de uma exibição. Existem dois métodos para isso (tanto quanto eu vejo): setBackground
e setBackgroundDrawable
.
Quando uso setBackground
, ele diz que foi adicionado no nível 16 da API, mas a versão mínima do SDK do meu projeto é 7. Suponho que não funcionará em nada abaixo de 16, estou certo? Mas quando eu uso o setBackgroundDrawable, ele diz que está obsoleto.
O que devo usar?
android
view
background
drawable
Pijusn
fonte
fonte
Respostas:
Ele foi descontinuado, mas ainda funciona para que você possa usá-lo. Mas se você quiser estar completamente correto, apenas pela integridade ... Você faria algo como o seguinte:
Para que isso funcione, você precisa definir buildTarget api 16 e min build como 7 ou algo semelhante.
fonte
android:minSdkVersion="7" android:targetSdkVersion="17"
, no entanto setBackground () sai como erro: Chamada exige nível API 16 (atual min é 7)@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") private static void setBg(RelativeLayout layout, BitmapDrawable TileMe) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(TileMe); } else { layout.setBackground(TileMe); } }
Você pode usar o
setBackgroundResource()
que está no nível 1 da API.fonte
setBackgroundResource(int)
aceita o ID do recurso, portanto, ele deve aumentar a exibição toda vez para definir o plano de fundo. Eu não quero esse comportamento, supondo que eu já tenha inflado o Drawable. Estou esquecendo de algo?Parece que atualmente não há diferença entre as 2 funções, conforme mostrado no código-fonte (crédito para este post ):
portanto, é apenas uma decisão de nomeação, semelhante àquela com pai de preenchimento versus pai de correspondência.
fonte
sei que essa é uma pergunta antiga, mas tenho uma situação semelhante e minha solução foi
e então você pode brincar com o "Drawable", aplicando filtros de cores, etc.
fonte
Usar
ViewCompat.setBackground(view, background);
fonte
você poderia usar em
setBackgroundResource()
vez disso ou sejarelativeLayout.setBackgroundResource(R.drawable.back);
isso funciona para mim.
fonte
Agora você pode usar qualquer uma dessas opções. E vai funcionar em qualquer caso. Sua cor pode ser um código HEX , assim:
Um recurso de cores , como este:
Ou um recurso xml personalizado , assim:
Espero que ajude!
fonte
Usando o Android studio 1.5.1, recebi os seguintes avisos:
e as reclamações sobre depreciação
Usando este formato, me livrei de ambos:
fonte
Isso funciona para mim: o modo de exibição de exibição é o seu editText, spinner ... etc. E int drawable é o seu exemplo de rota drawable (R.drawable.yourDrawable)
fonte
Use setBackgroundResource (R.drawable.xml / png)
fonte
Eu também tive esse problema, mas fiz uma solução alternativa usando um ImageView .
Tente usar um RelativeLayout e adicione um ImageView dentro dele (largura e altura: fill_parent, scaleType: center).
Verifique também se a visualização de imagem é o primeiro elemento dentro do RelativeLayout, para que ela atue como plano de fundo.
fonte
if
cláusula. Veja a resposta correta.Você também pode fazer isso:
EDIT: Assim como apontado por @BlazejCzapp , é preferível evitar o uso de reflexão se você conseguir resolver o problema sem ele. Eu tive um caso de uso em que não consegui resolver sem reflexão, mas esse não é o caso acima. Para mais informações, consulte http://docs.oracle.com/javase/tutorial/reflect/index.html
fonte