Saya memiliki bagian LinearLayout
dalam ScrollView
yang memiliki android:layout_height="fill_parent"
, tetapi tidak memperluas ke ketinggian penuh ScrollView
. Layout saya terlihat seperti:
level layout layout_width layout_height
1 LinearLayout fill_parent fill_parent
2 LinearLayout fill_parent wrap_content
3 (some irrelevant stuff)
2 ScrollView fill_parent fill_parent <-- this expands full height
3 LinearLayout fill_parent fill_parent <-- this does not (has orientation=vertical)
(following stuff probably are irrelevant, but just to be sure:)
4 TextView fill_parent fill_parent
4 LinearLayout fill_parent wrap_content
Saya dapat melihat bahwa LinearLayout
tidak memperluas ketinggian penuh ScrollView
karena di Eclipse Android Layout Editor
, jika saya memilih ScrollView
(di panel Garis Besar) itu disorot dengan batas merah yang mengisi layar ke bawah tetapi ketika saya memilih LinearLayout
sorotnya tidak meluas ke bagian bawah layar. Bagaimana saya bisa melakukannya?
Efek yang saya coba capai adalah memiliki beberapa teks dan tombol di bawahnya (di LinearLayout
dalam level 4 hanya ada tombol). Teks bisa cukup besar untuk memerlukan bilah gulir, dalam hal ini saya ingin pengguna harus gulir ke bawah untuk melihat tombol. Jika teks tidak cukup besar untuk bilah gulir, saya ingin tombol yang LinearLayout
berisi menempel ke bagian bawah layar.
Pada awalnya saya pikir saya tidak boleh memposting XML lengkap karena biasanya penolakan untuk melihat sejumlah besar kode dalam sebuah pertanyaan. Namun, sepertinya itu perlu, jadi inilah tata letak lengkapnya.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/video_layout"
android:focusable="true"
style="@style/VideoLayout">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@android:drawable/ic_media_play"
android:foregroundGravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/video_thumb"
android:padding="5dip"
android:background="#454545"/>
</FrameLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
style="@style/VideoTitle"
android:id="@+id/video_title"
android:layout_gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<!-- this ScrollView expands the full height of the screen.
However, the next LinearLayout does not expand the full height of the ScrollView -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_gravity="fill"
android:orientation="vertical"
android:id="@+id/info_layout">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/info_body"
style="@style/InfoText"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="@android:style/ButtonBar">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="@string/button_readmore"
android:id="@+id/btn_read_more"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Saat ini saya telah beralih ke android:layout_gravity="bottom"
masalah LinearLayout
, yang membuat tombol menempel pada bagian bawah layar tidak peduli apa. Tapi itu juga membuat teks menempel di bagian bawah layar, yang tidak persis seperti apa yang saya cari.
Pembaruan: goreskan itu, android:layout_gravity="bottom"
buat yang ScrollView
tidak bisa, yah, gulir. Ide lain?
sumber
android:weight
.Saya tahu posting ini sangat lama, Bagi mereka yang tidak ingin menggunakan
android:fillViewport="true"
karena kadang-kadang tidak memunculkan edittext keyboard di atas. Gunakan tata letak Relatif alih-alih LinearLayout yang menyelesaikan tujuannya.sumber
Bisakah Anda memberikan tata letak xml Anda? Melakukan hal itu akan memungkinkan orang untuk menciptakan kembali masalah dengan upaya minimal.
Anda mungkin harus mengatur
untuk item yang ingin Anda kembangkan
sumber
Solusinya adalah menggunakan
android:fillViewport="true"
pada tampilan Gulir dan terlebih lagi coba gunakan
"wrap_content"
bukannya"fill_parent"
sebagai"fill_parent"
sudah usang sekarang.
sumber
Saya sudah terbiasa menggunakan ini secara dinamis. Saya memiliki LinearLayout dan di dalam ini digunakan ScrollView sebagai seorang anak. Lalu saya ambil lagi LinearLayout dan tambahkan apa yang pernah Anda lihat ingin LinearLayout ini dan kemudian LinearLayout ini tambahkan ke ScrollView dan akhirnya tambahkan ScrollView ini ke LinearLayout. Maka kamu bisa mendapatkan scroll di dalam ur ScrollView dan tidak ada yang tersisa untuk terlihat.
LinearLayout (Parent) - ScrollView (anak dari LinerLayout) - LinearLayout (anak dari ScrollView) - tambahkan di sini textView, Tombol, pemintal dll, apa pun yang Anda inginkan. Kemudian tambahkan LinearLyout ini ke ScrollView. Karena hanya satu ANAK untuk ScrollView yang berlaku dan terakhir tambahkan ScrollView ini ke LinearLyout. Jika area yang ditentukan melebihi dari ukuran Layar maka Anda akan mendapatkan Scroll dalam ScrollView.
sumber
Dalam kasus saya, saya belum memberikan
Jadi secara default dibutuhkan horisontal, tetapi scrollview scrols secara vertikal, jadi silakan periksa apakah 'android: orientasi = "vertikal"' diatur ke Anak ScrollView Anda (Dalam kasus LinearLayout).
.
sumber