Saya memiliki tab pengaturan sebagai PEMBARUAN 29/05/2015 pos ini . Tab mengambil lebar penuh pada ponsel Nexus 4 saya tetapi pada tablet nexus 7 berada di tengah dan tidak menutupi lebar layar penuh.
Tangkapan layar Nexus 7 tangkapan layar Nexus 4
Saya memiliki tab pengaturan sebagai PEMBARUAN 29/05/2015 pos ini . Tab mengambil lebar penuh pada ponsel Nexus 4 saya tetapi pada tablet nexus 7 berada di tengah dan tidak menutupi lebar layar penuh.
Tangkapan layar Nexus 7 tangkapan layar Nexus 4
Jawaban:
Jawaban "sederhana" yang dipinjam dari Kaizie hanya akan ditambahkan
app:tabMaxWidth="0dp"
diTabLayout
xml Anda :sumber
Saya memiliki masalah yang sama dan saya memeriksa gaya TabLayout, dan saya menemukan bahwa gaya standarnya adalah
Widget.Design.TabLayout
yang memiliki implementasi yang berbeda (normal, landscape, dan sw600dp).Yang kami butuhkan adalah yang untuk tablet (sw600dp) yang memiliki implementasi sebagai berikut:
Dari style ini kita akan menggunakan " tabGravity " (yang nilainya mungkin "center" atau "fill") menggunakan nilai "fill".
Tetapi kita perlu melangkah lebih dalam, dan kemudian kita melihat bahwa yang ini meluas
Base.Widget.Design.TabLayout
, yang implementasinya adalah:Jadi, dari gaya ini kita perlu mengganti " tabMaxWidth ". Dalam kasus saya, saya mengaturnya
0dp
, sehingga tidak memiliki batas.Dan gaya saya terlihat seperti ini:
Dan kemudian bilah tab akan mengisi seluruh layar dari sisi ke sisi.
sumber
Solusi untuk digulir: (TabLayout.MODE_SCROLLABLE), saat itulah Anda membutuhkan lebih dari 2 tab (tab Dinamis)
Langkah 1: style.xml
Langkah 2: Tata letak xml Anda
Langkah 3: Di Aktivitas / Fragmen Anda di mana saja Anda memiliki tab.
sumber
addTab
dan mengatur berat untuk setiap tab seperti yang ditambahkan.override fun addTab(tab: Tab, position: Int, setSelected: Boolean) { super.addTab(tab, position, setSelected) allotEachTabWithEqualWidth() }
Untuk memaksa tab mengambil lebar penuh (dibagi menjadi ukuran yang sama), terapkan yang berikut ini pada
TabLayout
tampilan:sumber
TabLayout
diatur keapp:tabMode=“scrollable”
, itu akan menghasilkan tab menjadi panjang tetap (kata-kata panjang akan membungkus) dan tab tidak akan lagi meluncur, pada dasarnya membuat tab "diperbaiki" lagi.Ini membantu Anda harus mencoba
sumber
bekerja untukku. Ini juga punya
xmlns:app="http://schemas.android.com/apk/res-auto"
sumber
Bagi saya kode berikut ini berfungsi dan cukup.
sumber
Periksa kode di bawah ini untuk solusinya.
Di bawah ini adalah kode tata letak:
Catatan, untuk jumlah tab dinamis, jangan lupa untuk memanggil setTabNumbers (tabcount).
Referensi diambil dari https://medium.com/@elsenovraditya/set-tab-minimum-width-of-scrollable-tablayout-programmatically-8146d6101efe
sumber
Solusi untuk Digulirkan (Kotlin)
Dalam xml:
Di Kotlin:
Dalam kasus saya jika kurang dari 3 tab saya mengalokasikan ruang yang sama.
Catatan: Jika kondisinya sesuai kebutuhan Anda
sumber
Kenapa semua pekerjaan itu sibuk? Cukup masukkan
app:tabMode="scrollable"
TabLayout Anda dalam XML. Itu dia.sumber
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
Juga ini hanya properti untuk diatur ke tabLayout ini tidak masalah berapa banyak tab yang Anda tambahkan statis atau dinamis.Dalam varian saya tentang masalah ini, saya memiliki 3 tab ukuran sedang yang tidak terlalu lebar pada tablet. Saya tidak perlu tab untuk dapat digulir di tablet, karena tablet cukup besar untuk menampilkan semua tab tanpa digulir. Tetapi saya memang membutuhkan tab yang dapat digulir pada ponsel, karena ponsel terlalu kecil untuk menampilkan semua tab secara bersamaan.
Solusi terbaik dalam kasus saya adalah menambahkan
res/layout-sw600dp/main_activity.xml
file, di mana TabLayout yang relevan dapat memilikiapp:tabGravity="fill"
danapp:tabMode="fixed"
. Tetapi dalam rutinitas sayares/layout/main_activity.xml
, saya keluarapp:tabGravity="fill"
danapp:tabMode="fixed"
, danapp:tabMode="scrollable"
sebaliknya.sumber
Harap dicatat bahwa Anda juga perlu mengatur
untuk mengisi semua ruang
sumber