Saya mencoba membuat gridview dengan dua kolom. Maksud saya dua foto per baris berdampingan seperti gambar ini.
Tapi gambar saya memiliki ruang di antara mereka, karena ukurannya tidak sama. Inilah yang saya dapatkan.
karena Anda dapat melihat gambar pertama menyembunyikan legenda yang menunjukkan nama kontak dan nomor telepon. dan gambar-gambar lainnya tidak diregangkan dengan benar.
Ini file xml GridView saya . Seperti yang Anda lihat columnWidth
diatur ke 200dp . Saya ingin ini otomatis , sehingga gambar akan secara otomatis mengubah ukuran untuk setiap ukuran layar.
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridViewContacts"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="2"
android:columnWidth="200dp"
android:stretchMode="columnWidth"
android:gravity="center" />
dan di sini adalah file item xml, yang mewakili setiap item itu sendiri.
<?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" >
<ImageView
android:id="@+id/imageViewContactIcon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY" />
<LinearLayout
android:id="@+id/linearlayoutContactName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="#99000000"
android:layout_alignBottom="@+id/imageViewContactIcon">
<TextView
android:id="@+id/textViewContactName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:textSize="15sp"
android:text="Lorem Ipsum" />
<TextView
android:id="@+id/textViewContactNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:layout_marginLeft="5dp"
android:focusable="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:textSize="10sp"
android:text="123456789" />
</LinearLayout>
</RelativeLayout>
Jadi yang saya inginkan adalah menampilkan dua gambar per baris, dan ukuran gambar otomatis, tidak peduli ukuran layarnya. Apa yang saya lakukan salah pada tata letak?
Terima kasih.
scaleType
properti centerCrop di ImageView. Yang perlu saya capai adalah cara membuat gambar berdampingan, dan secara otomatis mengubah ukuran untuk ukuran layar yang berbeda.Jawaban:
Inilah metode yang relatif mudah untuk melakukan ini. Lemparkan GridView ke tata letak Anda, atur mode peregangan untuk meregangkan lebar kolom, atur jarak ke 0 (atau apa pun yang Anda inginkan), dan atur jumlah kolom menjadi 2:
res / layout / main.xml
Buat kebiasaan
ImageView
yang mempertahankan rasio aspeknya:src / com / example / graphicstest / SquareImageView.java
Buat tata letak untuk item kisi menggunakan SquareImageView ini dan atur scaleType ke centerCrop:
res / layout / grid_item.xml
Sekarang buat semacam adaptor untuk laptop Anda
GridView
:src / com / example / graphicstest / MyAdapter.java
Setel adaptor itu ke
GridView
:Dan nikmati hasilnya:
sumber
ImageView
dan mengapa menggunakan sesuatu seperti ini<com.example.graphicstest.SquareImageView>
alih-alih<ImageView>
tag sederhana dalam file xml . Bisakah Anda menjelaskan lebih lanjut tentang rasio aspek ini , dan bagaimana tidak membuat kelas ini, memengaruhi item. apakah ada cara untuk mengoptimalkan ini, tanpa perluImageView
kelas khusus ? terima kasih atas bantuan Anda.pendekatan sederhana lain dengan barang bawaan modern seperti PercentRelativeLayout sekarang tersedia untuk pengguna baru yang mengalami masalah ini. terima kasih kepada tim android untuk merilis item ini.
dan untuk kinerja yang lebih baik Anda dapat menggunakan beberapa hal seperti picasso image loader yang membantu Anda mengisi seluruh lebar setiap gambar orang tua. misalnya di adaptor Anda, Anda harus menggunakan ini:
sekarang Anda tidak perlu Kelas CustomImageView lagi.
PS saya sarankan untuk menggunakan ImageView di tempat Tipe Int di Item kelas.
semoga ini membantu ..
sumber