Mengapa FOOBARZ diletakkan di bawah ketika tidak ada elemen layout_height="fill_parent"
dengan kata lain, semua elemen wrap_content untuk tinggi?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/feed_u"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_marginLeft="5dip"
android:scaleType="centerCrop"
android:drawableTop="@android:drawable/presence_online"
android:text="U" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/feed_u">
<ImageView
android:id="@+id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_minus" />
<ImageView
android:id="@+id/feed_ha"
android:layout_toLeftOf="@id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_plus" />
<TextView
android:id="@+id/feed_t"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title">
</TextView>
<TextView
android:id="@+id/feed_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Band"
android:layout_below="@id/feed_t">
</TextView>
<TextView
android:id="@+id/feed_s"
android:layout_below="@id/feed_a"
android:text="S"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
<TextView
android:id="@+id/feed_tm"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="FOOBARZ"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
</RelativeLayout>
</RelativeLayout>
android
android-layout
hunterp
sumber
sumber
hierarchyviewer
atau perspektif Hierarchy View di Eclipse untuk menentukan di mana ada masalah: developer.android.com/guide/developing/debugging/…Jawaban:
Dari
RelativeLayout
dokumen:Dokumentasi kelas
Yang persis seperti Anda. RelativeLayout tidak bisa melakukan itu.
sumber
android:layout_height="200dp"
. Ini akan memungkinkan Anda untuk menggunakanandroid:layout_alignParentBottom="true"
<ImageView>
yang berada di belakangnya.layout_height
darimatch_parent
Bagi mereka yang mencari solusi untuk ini, seperti yang saya lakukan, Anda dapat menggunakan
FrameLayout
bukanRelativeLayout
.Kemudian Anda dapat mengatur gravitasi objek yang dimaksud ke kanan bawah seperti di bawah ini
sumber
Anda telah mengatur RelativeLayout ke
"wrap_content"
dan TextView keandroid:layout_alignParentBottom="true"
, sehingga secara otomatis mencoba untuk meregangkan RelativeLayout ke bawah. Jangan gunakan dependensi seperti itu dengan Layout Relatif, karena dapat dihitung sebagai "dependensi melingkar".Dari dokumen untuk RelativeLayout :
Cobalah untuk menyelaraskan TextView Anda dengan sesuatu selain dari induk RelativeLayout, tetapi perhatikan juga masalah ini:
Ketergantungan melingkar, butuh bantuan dengan kode yang tepat
Atau, cobalah menambahkan tata ruang bagian dalam yang lebih canggih.
sumber
Jawaban yang bagus Sekarang jika Anda tidak memiliki
layout_alignParentBottom="true"
dan masih mendapatkan masalah ini hati-hati diandroid:background="@drawable/bkgnd"
mana bkgnd adalah masalah besar.sumber
Saya tidak yakin mengapa cara yang jelas dan bersih untuk mencapai ini belum diposting. Solusi berkinerja ini berfungsi untuk Tampilan MyView apa pun dengan ketinggian yang diketahui.
Bungkus Anda
RelativeLayout
dengan tinggiwrap_content
dalam FrameLayout:Harap perhatikan bahwa tampilan di bagian bawah FrameLayout akan berada di atas
RelativeLayout
konten Anda , jadi Anda harus menambahkan bantalan ke bagian bawah tata letak itu untuk mengakomodasi itu. Jika Anda ingin tampilan itu menjadi variabel tinggi, Anda bisa Subclass FrameLayout untuk menambahkan padding dalam kode berdasarkan ketinggian tampilan yang diukur, atau hanya mengubah FrameLayout ke LinearLayout vertikal jika Anda tidak khawatir tentang kinerja, yaitu itu bukan listview item, atau tampilan yang relatif ringan.sumber
Jangan gunakan properti jenis alight_Parent dengan tampilan anak
Anda dapat menggunakan tata letak bingkai alih-alih RelativeLayout dengan gravitasi masing-masing
sumber