Saya ingin mengatur latar belakang yang dapat digambar tampilan. Ada dua metode untuk ini (sejauh yang saya lihat): setBackground
dan setBackgroundDrawable
.
Ketika saya menggunakan setBackground
, dikatakan telah ditambahkan di API level 16 tetapi versi min SDK proyek saya adalah 7. Saya menganggap itu tidak akan bekerja pada apa pun di bawah 16, apakah saya benar? Tetapi ketika saya menggunakan setBackgroundDrawable, dikatakan sudah usang.
Apa yang harus saya gunakan?
android
view
background
drawable
Pijusn
sumber
sumber
Jawaban:
Sudah usang tetapi masih berfungsi sehingga Anda bisa menggunakannya. Tetapi jika Anda ingin benar sepenuhnya, hanya untuk kelengkapannya ... Anda akan melakukan sesuatu seperti berikut:
Agar ini berfungsi, Anda perlu menetapkan buildTarget api 16 dan min build menjadi 7 atau yang serupa.
sumber
android:minSdkVersion="7" android:targetSdkVersion="17"
, namun setBackground () keluar sebagai kesalahan: Panggilan membutuhkan API level 16 (min saat ini adalah 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); } }
Kamu bisa memakai
setBackgroundResource()
yang ada di API level 1.sumber
setBackgroundResource(int)
menerima id sumber daya, oleh karena itu ia harus mengembang tampilan setiap kali untuk mengatur latar belakang. Saya tidak ingin perilaku seperti itu, dengan asumsi saya sudah menggembungkan Drawable. Apakah saya melewatkan sesuatu?Tampaknya saat ini tidak ada perbedaan antara 2 fungsi, seperti yang ditunjukkan pada kode sumber (kredit untuk posting ini ):
jadi itu hanya keputusan penamaan, mirip dengan yang berisi orang tua vs orang tua pertandingan.
sumber
saya tahu ini adalah pertanyaan lama tetapi saya memiliki situasi yang sama, dan solusi saya adalah
lalu Anda bisa bermain dengan "Drawable", menerapkan filter warna, dll
sumber
Menggunakan
ViewCompat.setBackground(view, background);
sumber
Anda bisa menggunakan
setBackgroundResource()
misrelativeLayout.setBackgroundResource(R.drawable.back);
ini bekerja untuk saya.
sumber
Sekarang Anda dapat menggunakan salah satu opsi itu. Dan itu akan berhasil dalam hal apa pun. Warna Anda dapat berupa kode HEX , seperti ini:
Sebuah sumber daya warna , seperti ini:
Atau sumber daya xml khusus , seperti:
Semoga ini bisa membantu!
sumber
Menggunakan Android studio 1.5.1 saya mendapat peringatan berikut:
dan keluhan tentang penghinaan
Dengan menggunakan format ini, saya menyingkirkan keduanya:
sumber
Ini berfungsi untuk saya: Tampilan tampilan adalah editText Anda, pemintal ... dll. Dan int drawable adalah contoh rute drawable Anda (R.drawable.yourDrawable)
sumber
Gunakan setBackgroundResource (R.drawable.xml / png)
sumber
Saya juga punya masalah ini, tapi saya membuat solusi menggunakan ImageView .
Coba gunakan RelativeLayout dan tambahkan ImageView di dalamnya (lebar dan tinggi: fill_parent, scaleType: center).
Pastikan juga imageview adalah elemen pertama di dalam RelativeLayout, sehingga akan bertindak sebagai latar belakang.
sumber
if
klausa. Lihat jawaban yang benar.Anda juga dapat melakukan ini:
EDIT: Seperti yang ditunjukkan oleh @BlazejCzapp , lebih baik untuk menghindari menggunakan refleksi jika Anda bisa menyelesaikan masalah tanpa itu. Saya memiliki kasus penggunaan di mana saya tidak dapat menyelesaikan tanpa refleksi tetapi itu tidak terjadi di atas. Untuk informasi lebih lanjut silakan lihat di http://docs.oracle.com/javase/tutorial/reflect/index.html
sumber