İle eklediğimiz görüntünün kenar boşluğunu veya dolgusunu ayarlamak mümkün müdür android:drawableLeft
?
İle eklediğimiz görüntünün kenar boşluğunu veya dolgusunu ayarlamak mümkün müdür android:drawableLeft
?
Yanıtlar:
Bahsedildiği gibi cephus android:drawablePadding
, düğme yeterince küçükse, metin ile çekilebilir arasındaki dolguyu zorlar.
Büyük düğmeler dışarı atarken zaman kullanabilirsiniz android:drawablePadding
birlikte android:paddingLeft
ve android:paddingRight
metin zorlamak ve düğmenin merkezine doğru içe çekilebilirdir için. Sol ve sağ dolguyu ayrı ayrı ayarlayarak düzende çok ayrıntılı ayarlamalar yapabilirsiniz.
Metni ve simgeyi varsayılan olarak olduğundan daha yakına itmek için dolgu kullanan bir örnek düğme:
<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
sol dolgu boşluğunun daha büyük olmasına neden olmasıdır, çünkü sadece hedefin sadece çekilebilir olana belirli bir hedefi olamaz.
TextView hile yapması gereken bir android: drawablePadding özelliğine sahiptir:
android: drawablePadding
Çekilebilir malzemeler ve metin arasındaki dolgu.
"14.5sp" gibi bir birime eklenen bir kayan nokta sayısı olan bir boyut değeri olmalıdır. Kullanılabilir birimler şunlardır: piksel (piksel), dp (yoğunluktan bağımsız pikseller), sp (tercih edilen yazı tipi boyutuna göre ölçeklenmiş pikseller), (inç), mm (milimetre) cinsinden.
Bu ayrıca, bu tür bir değer içeren bir kaynağa ("@ [paket:] türü: ad" biçiminde) veya tema özelliğine ("? [Paket:] [tür:] ad" biçiminde) bir referans olabilir. .
Bu, drawablePadding genel öznitelik kaynak simgesine karşılık gelir.
android:drawablePadding
yalnızca düğme 2'yi ezecek kadar küçükse, metin ile çekilebilir arasında bir dolgu boşluğu oluşturur. Düğmeniz birleştirilmiş genişlikten (drawableLeft / drawableRight için) veya yükseklikten (drawableTop / drawableBottom için) daha genişse drawablePadding hiçbir şey yapmaz.
Şu an bununla da mücadele ediyorum. Düğmelerim oldukça geniştir ve simge düğmenin sol kenarında asılıdır ve metin ortada ortalanmıştır. Şimdilik bunu yapmanın tek yolu, tuvalin sol kenarına photoshop ile boş pikseller ekleyerek çekilebilir bir kenarda pişirmek oldu. İdeal değil ve gerçekten tavsiye edilmez. Ama şu an için stop-gap çözümüm, TextView / Button'ı yeniden oluşturmaktan yoksun.
Evet. aşağıdaki gibi drawablePadding kullanın ,
<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" />
Çekilebilir kaynaklarınızı oluşturun .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
çekilebilir simgeye doldurma vermek için en kolay yoldur ama Beğendiğiniz belirli bir tarafı dolgu veremez paddingRight
veya paddingLeft
çekilebilir ait bunu içine kazmak zorunda olduğunu ulaşmak icon.To. Eğer uygularsanız Ve paddingLeft
ya paddingRight
karşı Edittext
o zaman izleyebilmektedir dolgu koyacaktır Edittext
çekilebilir simgesiyle birlikte.
düzenleme metniniz için bir şekil tanımlayın ve bir dolgu verin. Örneğin
<?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>
Bu şekilde tanımlanan dolgu, çekme sol veya sağa dolgu vermenize yardımcı olacaktır ---------------------- Bu şekli EditView'da uygulayın
<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"
/>
tanımlı şekli arka plan olarak kullanmak EditText'inize drawableLeft için bir stil artı marj verecektir.
android: drawablePadding, çekmeceli simgeye dolgu vermenin en kolay yoludur, ancak paddingRight veya padding gibi belirli bir yan dolgu veremezsiniz. Ve Edittext'e paddingLeft veya paddingRight uygularsanız, çekilebilir simgeyle birlikte tüm Edittext'e dolgu yerleştirir.
<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"/>
not: layout_width öğesinin wrap_content olması ve paddingLeft paddingRight drawablePadding öğesinin boşluğu kontrol etmek için kullanılması gerekir. Layout_width değerinin simge ve metin arasında boşluk olduğunu belirtirseniz, bir kez layout_width'e belirli bir değer verirseniz, dolgu ölçülür.
Cevabımı da yüzüğe atacağım. Bunu programlı olarak yapmak istiyorsanız aşağıdakileri yapabilirsiniz.
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);
Bu, telefonun LTR veya RTL'de olmasına bağlı olarak dolguyu çekilebilir ucun sonuna ekleyecektir.
Yerine Button
kullanımı LinearLayout
ile ImageView
ve TextView
içeriden. Gibi ImageView
ve TextView
kullanımı alt öğeler android:duplicateParentState="true"
.
Katman listesini kullanmayı düşünmelisiniz
Böyle bir çekilebilir dosya oluşturun, dosyayı ic_calendar.xml olarak adlandırın
<?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>
Düzen dosyası altında,
<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"
/>
Düğme için bir dolgu kullanabilirsiniz ve drawablePadding ile oynayabilirsiniz
<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" />
Belirli bir dolgu kullanabilirsiniz çizilebilir koymak android ile bağlıdır, paddingLeft = "10dp" veya android: paddingBottom = "10dp" veya android: paddingRight = "10dp" veya android: paddingTop = "10dp"
android:drawableLeft="@drawable/your_icon"
Sol tarafta gösterilecek çekmeceyi ayarlamak için kullanabilirsiniz . Çekmeceye dolgu malzemesi koymak için, sırasıyla sol / sağ dolguları ayarlamak için android:paddingLeft
veya tuşlarını kullanmalısınız android:paddingRight
.
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
Çekilebilir kaynak boyutu sabitse, bunu yapabilirsiniz:
<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" />
Burada anahtar şudur:
android:drawableRight="@drawable/ic_clear_black_24dp"
android:paddingRight="10dp"
android:paddingLeft="34dp"
Yani, çekilebilir kaynak artı paddingRight boyutu paddingLeft'dir.
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
sadece şunu yeniden yap:
<?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>
için
<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>
Negatif dolgu kullanmaya çalışır
Sevmek:
android:paddingLeft="-8dp"