Apakah mungkin untuk mengatur margin atau padding untuk gambar yang kami tambahkan dengan android:drawableLeft
?
Apakah mungkin untuk mengatur margin atau padding untuk gambar yang kami tambahkan dengan android:drawableLeft
?
Jawaban:
Seperti cephus yang disebutkan android:drawablePadding
hanya akan memaksa padding antara teks dan drawable jika tombolnya cukup kecil.
Saat meletakkan tombol yang lebih besar, Anda dapat menggunakan android:drawablePadding
bersama dengan android:paddingLeft
dan android:paddingRight
untuk memaksa teks dan digeser ke dalam ke arah tengah tombol. Dengan menyesuaikan padding kiri dan kanan secara terpisah, Anda dapat membuat penyesuaian yang sangat rinci pada tata letak.
Berikut adalah contoh tombol yang menggunakan padding untuk mendorong teks dan ikon lebih dekat bersama daripada yang seharusnya:
<Button android:text="@string/button_label"
android:id="@+id/buttonId"
android:layout_width="160dip"
android:layout_height="60dip"
android:layout_gravity="center"
android:textSize="13dip"
android:drawableLeft="@drawable/button_icon"
android:drawablePadding="2dip"
android:paddingLeft="30dip"
android:paddingRight="26dip"
android:singleLine="true"
android:gravity="center" />
passwordToggleDrawable
gap padding kiri menjadi lebih besar karena tidak dapat menargetkan spesifik untuk dibiarkan saja.
TextView memiliki properti android: drawablePadding yang dapat melakukan trik:
android: drawablePadding
Padding antara drawables dan teks.
Harus berupa nilai dimensi, yang merupakan angka titik apung yang ditambahkan dengan unit seperti "14.5sp". Unit yang tersedia adalah: px (piksel), dp (piksel bebas-kepadatan), sp (piksel berskala berdasarkan ukuran font yang disukai), dalam (inci), mm (milimeter).
Ini juga bisa menjadi referensi ke sumber daya (dalam bentuk "@ [paket:] ketik: nama") atau atribut tema (dalam bentuk "? [Paket:] [jenis:] nama") yang berisi nilai dari jenis ini .
Ini sesuai dengan simbol sumber daya atribut global drawablePadding.
android:drawablePadding
hanya akan membuat celah bantalan antara teks dan gambar jika tombolnya cukup kecil untuk menyatukan 2. Jika tombol Anda lebih lebar dari lebar gabungan (untuk drawableLeft / drawableRight) atau tinggi (untuk drawableTop / drawableBottom) maka drawablePadding tidak melakukan apa-apa.
Saya sedang berjuang dengan ini sekarang juga. Tombol saya cukup lebar, dan ikon tergantung di tepi kiri tombol dan teks dipusatkan di tengah. Satu-satunya cara saya untuk mengatasi ini untuk saat ini adalah memanggang margin pada gambar dengan menambahkan piksel kosong ke tepi kiri kanvas dengan photoshop. Tidak ideal, dan juga tidak benar-benar direkomendasikan. Tapi itu solusi stop-gap saya untuk saat ini, singkat membangun kembali TextView / Button.
Iya. gunakan drawablePadding sebagai berikut,
<TextView
android:id="@+id/tvHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Settings and Contents"
android:drawableLeft="@drawable/icon_success"
android:drawablePadding="10dp" />
Buat sumber daya yang dapat ditarik.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<inset android:drawable="@drawable/small_m" android:insetLeft="10dp" android:insetTop="10dp" />
</item>
<item>
<inset android:drawable="@drawable/small_p" android:insetLeft="10dp" android:insetTop="10dp" />
</item>
</selector>
android:drawablePadding
adalah cara termudah untuk memberikan padding ke ikon drawable tetapi Anda tidak dapat memberikan padding satu sisi seperti paddingRight
atau paddingLeft
dari drawable icon. Untuk mencapai itu Anda harus menggali ke dalamnya. Dan Jika Anda menerapkan paddingLeft
atau paddingRight
untuk Edittext
itu akan menempatkan padding ke seluruh Edittext
bersama dengan ikon yang dapat ditarik.
tentukan bentuk untuk edittext Anda dan berikan padding Sebagai Contoh
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<padding
android:left="5dp"
android:right="5dp"
/>
<solid android:color="#F6F6F6" />
<stroke
android:width="1px"
android:color="#C3C3C3" />
<corners
android:bottomLeftRadius="1dp"
android:bottomRightRadius="1dp"
android:topLeftRadius="1dp"
android:topRightRadius="1dp" />
</shape>
Padding yang didefinisikan dalam bentuk ini akan membantu memberikan padding untuk draweleleft atau kanan ---------------------- Terapkan bentuk ini pada EditView
<EditText
android:id="@+id/example"
android:layout_width="fill_parent"
android:layout_height="36dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/shape2"
android:drawableLeft="@drawable/icon1"
android:drawablePadding="@dimen/txtDrwblPadding"
android:ems="10"
/>
menggunakan bentuk yang didefinisikan sebagai latar belakang akan memberikan EditText Anda beberapa gaya plus margin ke drawableLeft.
android: drawablePadding adalah cara termudah untuk memberikan padding ke ikon drawable tetapi Anda tidak dapat memberikan padding satu sisi tertentu seperti paddingRight atau paddingLeft dari ikon drawable. Untuk mencapai itu Anda harus menggali ke dalamnya. Dan Jika Anda menerapkan paddingLeft atau paddingRight ke Edittext maka itu akan menempatkan padding ke seluruh Edittext bersama dengan ikon yang dapat digambar.
<TextView android:layout_width="match_parent"
android:padding="5sp"
android:id="@+id/date"
android:gravity="center|start"
android:drawableEnd="@drawable/ic_calendar"
android:background="@drawable/edit_background"
android:hint="Not Selected"
android:drawablePadding="10sp"
android:paddingStart="10sp"
android:paddingEnd="10sp"
android:textColor="@color/black"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="32dp"
android:background="@drawable/a"
android:drawableLeft="@drawable/concern_black"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:drawablePadding="10dp"
android:text="text"/>
catatan: layout_width perlu wrap_content dan gunakan paddingLeft paddingRight drawablePadding untuk mengontrol celah. Jika Anda menentukan nilai layout_width akan memiliki kesenjangan antara ikon dan teks, saya pikir sekali memberikan nilai menentukan layout_width, padding akan mengukur.
Saya akan melemparkan jawaban saya ke atas ring juga. Jika Anda ingin melakukan ini secara terprogram Anda dapat melakukan hal berikut.
final Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.somedrawable);
final boolean isLTR = ViewCompat.LAYOUT_DIRECTION_LTR == ViewCompat.getLayoutDirection(this);
final int iconInsetPadding = getResources().getDimensionPixelSize(R.dimen.icon_padding);
final Drawable insetDrawable = new InsetDrawable(drawable, isLTR ? 0 : iconInsetPadding, 0, isLTR ? iconInsetPadding : 0, 0);
Ini akan menambahkan padding ke ujung drawable di mana end akan berarti kiri / kanan tergantung apakah ponsel di LTR atau RTL.
Alih-alih Button
digunakan LinearLayout
dengan ImageView
dan TextView
di dalam. Dalam item anak suka ImageView
dan TextView
gunakan android:duplicateParentState="true"
.
Anda harus mempertimbangkan menggunakan daftar lapisan
Buat file yang dapat digambar seperti ini, beri nama ic_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:right="10dp">
<bitmap android:gravity="center_vertical|left"
android:src="@drawable/ic_calendar_16dp"
android:tint="@color/red"
/>
</item>
</layer-list>
Di bawah file tata letak,
<TextView
android:id="@+id/tvDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_calendar"
android:textColor="@color/colorGrey"
android:textSize="14sp"
/>
Anda dapat menggunakan padding untuk tombol dan Anda bisa bermain dengan DrawablePadding
<Button
style="@style/botonesMenu"
android:padding="15dp"
android:drawablePadding="-15dp"
android:text="@string/actualizarBD"
android:textAlignment="gravity"
android:gravity="center"
android:layout_row="1"
android:layout_column="0"
android:drawableTop="@drawable/actualizar"
android:id="@+id/btnActualizar"
android:onClick="actualizarBD" />
Anda dapat menggunakan padding tertentu tergantung tempat meletakkan drawable Anda, dengan android: paddingLeft = "10dp" atau android: paddingBottom = "10dp" atau android: paddingRight = "10dp" atau android: paddingTop = "10dp"
Anda dapat menggunakan android:drawableLeft="@drawable/your_icon"
untuk mengatur gambar yang akan ditampilkan di sisi kiri. Untuk mengatur padding untuk drawable, Anda harus menggunakan android:paddingLeft
atau android:paddingRight
untuk mengatur padding kiri / kanan masing-masing.
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
Jika ukuran sumber daya yang dapat ditarik diperbaiki, Anda dapat melakukan hal ini:
<Button
android:background="@drawable/rounded_button_green"
style="?android:attr/selectableItemBackground"
android:layout_height="wrap_content"
app:layout_widthPercent="70%"
android:drawableRight="@drawable/ic_clear_black_24dp"
android:paddingRight="10dp"
android:paddingLeft="34dp"
tools:text="example" />
Kuncinya di sini adalah:
android:drawableRight="@drawable/ic_clear_black_24dp"
android:paddingRight="10dp"
android:paddingLeft="34dp"
Artinya, ukuran sumber daya yang dapat ditarik plus paddingRight adalah paddingLeft.
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
baru saja membuat ulang dari:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="40dp"/>
<solid android:color="@android:color/white"/>
</shape>
untuk
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:right="@dimen/_2dp"
android:left="@dimen/_2dp"
android:bottom="@dimen/_2dp"
android:top="@dimen/_2dp"
>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="40dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item>
</layer-list>
Mencoba menggunakan lapisan negatif
Suka:
android:paddingLeft="-8dp"