android:drawableLeft margin和/或padding

是否有可能为我们添加的android:drawableLeft的图像设置边距或填充?

作为cephus提到的android:drawablePadding只会强制在文本和drawable之间填充,如果button足够小的话。

在布置较大的button时,可以使用android:drawablePaddingandroid:paddingLeftandroid:paddingRight一起强制文本并向内button的中心。 通过分别调整左侧和右侧填充,可以对布局进行非常详细的调整。

下面是一个示例button,它使用填充将文本和图标靠得比默认情况下靠得更近:

 <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" /> 

TextView有一个android:drawablePadding属性应该做的伎俩:

机器人:drawablePadding

绘图和文本之间的填充。

必须是一个维度值,这是一个浮点数字,附加一个单位如“14.5sp”。 可用的单位是:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可以是对资源(forms为“@ [package:] type:name”)或主题属性(forms为“?[package:] [type:] name”)的引用,包含这种types的值。

这对应于全局属性资源符号drawablePadding。

android:drawablePadding只会在文本和drawable之间创build一个填充间隙,如果button足够小,可以将它们压在一起。 如果你的button比组合的宽度宽(drawableLeft / drawableRight)或高度(drawableTop / drawableBottom),那么drawablePadding就不会做任何事情。

我现在也在为此苦苦挣扎。 我的button很宽,图标挂在button的左边,文本居中。 我现在唯一的解决方法就是用drawable在canvas的左边缘添加空白像素,然后在drawable的边缘进行烘焙。 不理想,也不是真的推荐。 但是这是我现在的解决scheme,短缺重buildTextView / Button。

android:drawablePadding是给padding绘制图标的最简单的方法,但是你不能给paddingRightpaddingLeft的可绘制图标指定一个特定的padding。为了达到这个目的,你必须深入研究它。 如果您将paddingLeftpaddingRight应用于Edittext ,则会将填充与可绘制图标一起放置到整个Edittext上。

制作可绘制的resources.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> 

为你的edittext定义一个形状,并给它一个填充例如

 <?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> 

在这个形状中定义的填充将有助于给填充绘制左侧或右侧———————-在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" /> 

使用该定义的形状作为背景将给你的EditText一些样式加边距drawableLeft。

是。 使用drawablePadding如下,

 <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" /> 

而不是button在里面使用带有ImageView和TextView的LinearLayout。 在像ImageView和TextView这样的子项中,使用android:duplicateParentState =“true”。

你可以使用android:drawableLeft="@drawable/your_icon"来设置在左边显示的drawable。 为了给drawable设置一个填充,你应该使用android:paddingLeft或者android:paddingRight分别设置左/右填充。

 android:paddingRight="10dp" android:paddingLeft="20dp" android:drawableRight="@drawable/ic_app_manager" 

你可以使用填充button,你可以用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" /> 

您可以使用特定的填充取决于在哪里把你的drawable,用android:paddingLeft =“10dp”或android:paddingBottom =“10dp”或android:paddingRight =“10dp”或android:paddingTop =“10dp”

如果可绘制的资源的大小是固定的,你可以这样做:

 <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" /> 

关键在于:

  android:drawableRight="@drawable/ic_clear_black_24dp" android:paddingRight="10dp" android:paddingLeft="34dp" 

也就是说,可绘制资源加上paddingRight的大小是paddingLeft。

你可以在这个例子中看到结果

试图使用负填充

喜欢:

 android:paddingLeft="-8dp"