Saya memiliki 6 ImageButton dalam aktivitas saya, saya mengatur gambar melalui kode saya di dalamnya (tidak menggunakan xml).
Saya ingin mereka menutupi 75% area tombol. Tetapi ketika beberapa gambar menutupi area yang lebih sedikit, beberapa terlalu besar untuk masuk ke dalam imageButton. Bagaimana mengubah ukuran dan menunjukkan secara terprogram? Di bawah ini adalah cuplikan layar
di bawah ini adalah file xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp" >
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_repeat"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_next"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
</LinearLayout>
dan cuplikan myClass.java:
public void addImageButtons()
{
iB_topleft = (ImageButton) findViewById(R.id.button_topleft);
iB_topright = (ImageButton) findViewById(R.id.button_topright);
iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft);
iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright);
iB_next = (ImageButton) findViewById(R.id.button_next);
iB_repeat = (ImageButton) findViewById(R.id.button_repeat);
}
public void setImageNextAndRepeat()
{
iB_topleft .setImageResource(R.drawable.aa);
iB_topright.setImageResource(R.drawable.bb);
iB_bottomleft.setImageResource(R.drawable.cc);
iB_bottomright.setImageResource(R.drawable.dd);
iB_next.setImageResource(R.drawable.next);
iB_repeat.setImageResource(R.drawable.repeat);
}
Jawaban:
Gunakan
android:padding="20dp"
(sesuaikan bantalan sesuai kebutuhan) untuk mengontrol seberapa banyak gambar diambil pada tombol.Gunakan
android:scaleType="fitCenter"
untuk memiliki skala Android gambar, danandroid:adjustViewBounds="true"
untuk menyesuaikan batas mereka karena penskalaan.Semua atribut ini dapat diatur dalam kode masing-masing
ImageButton
saat runtime. Namun, lebih mudah untuk mengatur dan mempratinjau dalam xml menurut saya.Selain itu, jangan gunakan
sp
untuk apa pun selain ukuran teks, itu diskalakan tergantung pada preferensi ukuran teks yang ditetapkan pengguna, sehinggasp
dimensi Anda akan lebih besar dari yang Anda inginkan jika pengguna memiliki pengaturan teks "besar". Gunakandp
sebagai gantinya, karena tidak diskalakan oleh preferensi ukuran teks pengguna.Berikut cuplikan tampilan setiap tombol:
sumber
ImageButton
metodesetScaleType(ImageView.ScaleType.CENTER)
setAdjustViewBounds(true)
melakukan ini secara terprogram.Saya menggunakan kode berikut di
xml
sumber
Coba gunakan
android:scaleType="fitXY"
di i-Imagebutton xmlsumber
Saya menggunakan
android:scaleType="fitCenter"
dengan kepuasan.sumber
Lihat tautan di bawah ini dan cobalah untuk menemukan apa yang Anda inginkan:
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html
sumber
Baru-baru ini saya mengetahui secara tidak sengaja bahwa karena Anda memiliki kontrol lebih besar pada ImageView sehingga Anda dapat mengatur onclicklistener untuk gambar di sini adalah contoh tombol gambar yang dibuat secara dinamis
sumber
Ini bekerja dengan baik dalam kasus saya. Pertama, Anda mengunduh gambar dan mengganti namanya menjadi iconimage, menempatkannya di folder yang dapat digambar. Anda dapat mengubah ukuran dengan mengatur
android:layout_width
atauandroid:layout_height
. Akhirnya, kita punyasumber
Anda dapat membuat widget ImageButton Anda seperti yang saya lakukan. Dalam kasus saya, saya membutuhkan widget dengan ukuran ikon tetap. Mari kita mulai dari atribut khusus:
Kelas widget cukup sederhana (intinya adalah perhitungan padding dalam metode onLayout ):
Dan akhirnya Anda harus menggunakan widget Anda seperti ini:
sumber