Ketika saya menjalankan layout pada file XML tertentu, saya mendapatkan ini:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Perubahan apa yang harus dilakukan untuk kode xml berikut:
<LinearLayout android:id="@+id/name_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/grouplist_single_left_grey_area" >
<ImageView android:id="@+id/photo_image"
android:layout_width="@dimen/thumbnail_width"
android:layout_height="@dimen/thumbnail_height"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:paddingRight="5dip"
android:paddingLeft="5dip"
android:layout_marginRight="5dip"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
android:src="@*android:drawable/nopicture_thumbnail"
android:background="@drawable/photo_highlight" />
<TextView android:id="@+id/name"
android:paddingLeft="5dip"
android:layout_weight="1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Seperti inilah tampilannya di layar:
Ikon kamera adalah defaultnya. Mengklik itu akan memberi pengguna opsi untuk memilih gambar lain.
Jawaban:
Untuk memperluas jawaban Romain Guy, berikut ini contohnya.
Sebelum:
Setelah:
sumber
Gabungkan
TextView
danImageView
menjadi satu, dengan menggunakansetCompoundDrawable*()
metode TextView , atau menggunakanandroid:drawableLeft
.sumber
setCompoundDrawable()
tidak akan mengurus drawable Anda apa adanya, Anda harus memanggilnyasetBounds
(lihat API ). Untuk menyetelnya, Anda bisa mendapatkan batas sebelumnya menggunakanTextView.getCompoundDrawables()
, mengakses indeks drawable yang benar dan terakhir memanggilgetBounds()
.Saya pikir saya akan mencoba mendapatkan beberapa punto tambahan untuk ini juga: Anda dapat menambahkan padding antara gambar dan teks menggunakan
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741sumber
Terkadang dimungkinkan untuk mengganti
ImageView
(atau beberapa) danTextView
dengan satuTextView
dengan drawable majemuk. TIDAK banyak parameter yang dapat diterapkan ke drawable majemuk menggunakan API asli dan pustaka TextViewRichDrawable ini , tetapi jika Anda dapat mengelola satu TextView daripada menggunakan LinearLayout, Anda pasti harus menggunakannya .Daftar atribut dan parameter yang dapat diterapkan ke sumber daya yang dapat digambar:
Ukuran: ( YA, sungguh ):
Bahkan menyetel sumber daya vektor sebagai drawable:
Padding Drawable menggunakan native API
android:drawablePadding
-> linkBerikut ini contohnya:
sumber
Sebuah
LinearLayout
yang berisiImageView
danTextView
dapat lebih efisien ditangani sebagai ditarik senyawa (satuTextView
, menggunakandrawableTop
,drawableLeft
,drawableRight
dan / ataudrawableBottom
atribut untuk menarik satu atau lebih gambar yang berdekatan dengan teks).Jika kedua widget saling diimbangi dengan margin, ini bisa diganti dengan
drawablePadding
atribut.Ada perbaikan cepat lint untuk melakukan konversi ini di plugin Eclipse.
Dari: Dokumen API Resmi Android!
sumber
Tambahkan
tools:ignore="UseCompoundDrawables"
ke<LinearLayout>
.sumber
Saat saya mengikuti kode di atas, teks di dalam TextView tidak disetel dengan benar. Anda perlu mengatur gravitasinya ke pusat | mulai untuk mencapai apa yang ditunjukkan dalam pertanyaan yang diajukan.
Tampilan teksnya terlihat seperti ini:
sumber
Jika Anda tidak ingin mengubah ImageView dan TextView, Anda dapat mengubah versinya di AndroidManifest.xml sebagai:
Jika versi Anda adalah android: targetSdkVersion = "17" ubah menjadi "18".
Semoga ini akan diperbaiki. Saya melakukannya dan melakukannya dengan benar
sumber
Pendekatan lain adalah menyematkan ViewImage ke LinearLayout lain (izinkan menanganinya dengan id sendiri):
sumber
sumber