Saya memiliki horizontal yang LinearLayout
berisi TextView
diikuti dengan di Spinner
sebelahnya. Ini LinearLayout
meningkat secara dinamis beberapa kali dalam vertikal tetap yang LinearLayout
terdapat dalam a RelativeLayout
.
Masalahnya adalah karena saya beralih dari Theme.light
ke Theme.holo.light
, baris terakhir TextView
dipotong menjadi dua. Ini terjadi jika teks dinamis panjang dan membentang lebih dari satu baris.
Saya telah dapat memperbaikinya dengan menambahkan bantalan bawah ke horizontal yang LinearLayout
berisi TextView
dan Spinner
.
Ini tidak terasa seperti perbaikan, tetapi lebih merupakan retasan. Bisakah seseorang memberi saya beberapa saran tentang cara memperbaikinya dengan benar?
Saya juga telah membaca beberapa pertanyaan lain, tetapi sepertinya tidak ada yang membantu.
Tata letak Horizontal Linear:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="TextView"/>
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Tata letak relatif di mana tata letak di atas dinaikkan secara dinamis pada Tata Letak Linear dengan id ll2_7:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
EDIT: Berikut adalah tata letak xml lengkap di atas:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
style="@style/question_section_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/question2_header" />
<RelativeLayout
android:id="@+id/relLayoutButtonNext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/bottomBar"
android:paddingBottom="3dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="3dp" >
<Button
android:id="@+id/buttonNext"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:onClick="nextStep"
android:text="Next Section"
android:textSize="20sp" />
<Button
android:id="@+id/buttonPrevious"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:onClick="previousStep"
android:text="Previous Section"
android:textSize="20sp" />
</RelativeLayout>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView10"
android:layout_below="@+id/ll2_7"
android:text="2.8" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_7"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_8" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/textView3"
android:layout_marginBottom="20dp"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/ll2_8"
android:text="2.9" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_8"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_9" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView5"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView4"
android:layout_below="@+id/ll2_9"
android:text="2.10" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_9"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_10" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView7"
android:layout_marginBottom="20dp"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView6"
android:layout_below="@+id/ll2_10"
android:text="2.11" />
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_10"
android:layout_toRightOf="@+id/textView10"
android:text="@string/quesiton2_11" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView9"
android:layout_below="@+id/textView9"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView8"
android:layout_below="@+id/ll2_11"
android:text="2.11.1" />
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_11"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_11_1" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView13"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
sumber
Jawaban:
Saya mengalami masalah cut-off yang sama seperti yang ditunjukkan pada tangkapan layar. Hal ini disebabkan oleh adanya perataan garis dasar secara horizontal
LinearLayout
.TextView
danSpinner
memiliki garis dasar yang berbeda karena perbedaan ukuran font. Untuk memperbaiki masalah ini, perlu menonaktifkan perataan garis dasar untuk tata letak dengan menyetel:atau di dalam kode:
sumber
Setelah mencoba jutaan hal berbeda, saya rasa saya punya jawabannya.
Saya menerapkan
LayoutGravity
ke item TextView:Tampaknya untuk menyelesaikan semua masalah kliping yang saya miliki. Semoga ini bisa membantu seseorang dengan masalah yang sama.
sumber
@android:style/Widget.TextView
dan menambahkan baris berikut:<item name="android:gravity">fill</item>
<item name="android:padding">1sp</item>
android:baselineAligned="false"
untuk AndaLinearLayout
Saya memiliki masalah yang sama, dan menemukan bahwa hanya menambahkan
baris terakhir teks tidak lagi memiliki turunannya yang terpotong.
sumber
Saya menambahkan beberapa spasi tiruan setelah teks dengan menambahkan
Saya mencoba semua solusi lain, tetapi ini adalah satu-satunya solusi yang berhasil untuk saya
sumber
Letakkan textview yang bermasalah di dalam framelayout. Saya rasa tampilan teks tidak dihitung dengan benar karena tampilan saudara, Spinner.
sumber
CheckBox
samaLinearLayout
. Ini menyelesaikan masalah.Ketika ini terjadi, Anda harus memastikan bahwa
TextView
tidak tumbuh lebih besar dari wadahnya -Jika a
TextView
diatur kewrap_content
dan wadahnya (atau wadah leluhur) tidak meninggalkan ruang untukTextView
tumbuh ke dalamnya dapat ditutup.Jika bukan itu masalahnya, mungkin juga
onMeasure()
dariTextView
terkadang tidak mengukur ekor huruf dengan benar, karakter non-latin, atau efek dari teks menjadi miring. Anda dapat memperbaikinya dengan mengatur gaya global untuk AndaTextView
sehingga akan diambil tanpa perlu mengubah seluruh basis kode Anda:Pastikan bahwa aplikasi / aktivitas Anda menggunakan tema khusus seperti:
Jawaban dari @Rynadt sangat membantu untuk mencapai tahap di atas. Mengatur gravitasi Teks di dalam Tampilan memastikan pada beberapa perangkat bahwa oklusi tidak pernah terjadi (Teks dipasang dengan benar di dalam tampilan), di perangkat lain bantuan dengan padding nilai sp, memastikan bahwa ekor dkk diperhitungkan dengan nilai spesifik TextSize.
sumber
Solusi saya mendekati yang diterima, tetapi saya harus mengubahnya menjadi
sebagai gantinya. Jika tidak, baris lain akan meregang juga dengan tambahan baris baru di tempat acak. Misalnya, baris terbesar memiliki 4 baris, jadi baris lain diubah dari
this is a testphrase
untuk
sumber
Saya menemukan solusi berbeda dengan memperluas TextView dan menambahkan Kelas kustom seperti ini:
sumber
this.setEllipsize(TextUtils.TruncateAt.END);
pernyataan if di atas, dan hapusandroid:ellipsize="end"
dari XML yang karena alasan tertentu merusaknya.coba dengan menghapus android: paddingBottom = "20dp"
dari
sumber
getViewTreeObserver().addOnGlobalLayoutListener
tidak berfungsi dalam tampilan pendaur ulang. Jika Anda menggunakan pendaur ulang, gunakanView.addOnLayoutChangeListener
:Saya menemukan bahwa elipsis yang saya tentukan
textView
dalam xml tidak selalu tercermin jadi saya mengaturnya secara terprogram sebelum menetapkan ulang properti teks. Ini berhasil untuk saya.sumber
Jika Anda memiliki masalah ini dan Anda
TextView
berada di dalam aRelativeLayout
, coba gantiRelativeLayout
untuk aLinearLayout
.Itu memperbaiki masalah saya
sumber
Anda bisa menggunakan pendengar tata letak global untuk TextView dalam semua tipe ViewGroup.
Anda dapat membaca lebih lanjut di sini
sumber
Saya pikir sangat sedikit yang dapat Anda lakukan untuk membuatnya berfungsi dengan mengubah tata letak. Seperti yang saya temukan bahwa beberapa metode hanya berfungsi dalam beberapa kasus. Saya pikir itu tergantung pada seluruh hierarki tata letak dan bukan solusi satu ukuran untuk semua. Saya juga memperhatikan bahwa itu terjadi terutama ketika Anda memiliki font berbeda yang ingin Anda atur ke TextView.
Metode pengambilan gambar pasti yang telah saya coba dan uji adalah Anda dapat menyetel atribut font dalam kode setelah tampilan ditingkatkan. Saya berasumsi bahwa Anda memiliki font di folder aset / font yang Anda inginkan.
Misalnya dalam Fragmen:
Dan dalam sebuah Aktivitas:
sumber
Saya memiliki masalah yang sama, dan itu sangat mengganggu.
Itu hanya terjadi dengan teks Arab.
Jika Anda membuat label multi-garis dan menambahkan a
\n
di ujung string Anda, itu akan memperbaikinya, tetapi masalahnya adalah akan ada celah besar antara label ini dan objek di bawahnya, karena fakta bahwa bidang ini sekarang memiliki baris kosong baru di bawahnya.Kontrol khusus dapat dilakukan untuk menyiasatinya. Tapi secara keseluruhan, ini adalah bug yang mengganggu.
sumber
Solusi terbaik untuk ini adalah dengan menambahkan Tampilan tiruan dari ketinggian yang diinginkan (yaitu, ini akan menambah bantalan itu sendiri) di bagian bawah tampilan Anda.
Seperti dalam kasus saya, saya menambahkan satu baris tabel lagi di bagian bawah tampilan. Semoga ini bisa membantu seseorang.
sumber
Aku tahu ini sudah larut, tapi ini bekerja seperti pesona bagiku. tambahkan kode ini ke Anda
textview
sumber
Tambahkan padding ke bagian bawah tampilan teks:
sumber
Saya akhirnya memperbaikinya!
Saya mencoba menambahkan String ke TextView in Service dan kemudian memanggil scrollTo (), baris terakhir akan dipotong!
ScrollTo () harus dipanggil dalam "Runnable", seperti:
Saya pikir itu karena dalam monent panggilan scrollTo () dalam layanan, pembaruan TextView belum siap.
sumber