android:drawableLeft边距和/或填充
是否可以为我们在android:drawableLeft中添加的图像设置边距或填充?
16个解决方案
409 votes
如提到的cephus android:drawablePadding只会在文本和drawable之间强制填充,如果按钮足够小的话。
布置较大按钮时,您可以将android:drawablePadding与android:paddingLeft和android:paddingRight结合使用,强制文本向内朝向按钮中心绘制。 通过分别调整左右填充,您可以对布局进行非常详细的调整。
这是一个示例按钮,使用填充将文本和图标推到一起比默认情况下更接近:
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" />
Jordan answered 2019-01-30T04:43:59Z
163 votes
TextView有一个android:drawablePadding属性应该可以解决这个问题:
机器人:drawablePadding
drawables和文本之间的填充。
必须是维值,这是附加的浮点数 有一个单位,如“14.5sp”。 可用单位为:px(像素),dp (与密度无关的像素),sp(基于优选的缩放像素) 字体大小),单位为(英寸),毫米(毫米)。
这也可能是对资源的引用(在表单中) “@ [package:] type:name”)或主题属性(在表单中 “?[package:] [type:] name”)包含此类型的值。
这对应于全局属性资源符号 drawablePadding。
Cheryl Simon answered 2019-01-30T04:44:54Z
55 votes
android:drawablePadding只会在文本和drawable之间创建填充间隙,如果按钮小到足以将2压缩在一起。 如果您的按钮宽度超过组合宽度(对于drawableLeft / drawableRight)或高度(对于drawableTop / drawableBottom),则drawablePadding不会执行任何操作。
我现在也在努力解决这个问题。 我的按钮非常宽,图标悬挂在按钮的左边缘,文本居中于中间。 我现在解决这个问题的唯一方法就是通过在photoshop的画布左边缘添加空白像素来在可绘制的边缘烘烤。 不理想,也没有真正推荐。 但这就是我现在的止损解决方案,没有重建TextView / Button。
cephus answered 2019-01-30T04:45:23Z
32 votes
android:drawablePadding是给可绘制图标填充的最简单方法,但你不能给像paddingRight或paddingLeft的可绘制图标这样的特定一面填充。要实现这一点,你必须深入研究它。如果您将paddingLeft或paddingRight应用于Edittext,那么它将填充整个Edittext以及可绘制图标。
Bhargav Thanki answered 2019-01-30T04:45:46Z
32 votes
是。 使用drawablePadding如下,
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" />
Parinda Rajapaksha answered 2019-01-30T04:46:08Z
31 votes
制作drawable resources.xml
The Finest Artist answered 2019-01-30T04:46:30Z
12 votes
为edittext定义一个形状并为其添加填充 例如
android:shape="rectangle" >
android:left="5dp"
android:right="5dp"
/>
android:width="1px"
android:color="#C3C3C3" />
android:bottomLeftRadius="1dp"
android:bottomRightRadius="1dp"
android:topLeftRadius="1dp"
android:topRightRadius="1dp" />
在这种形状中定义的填充将有助于为可绘制的左侧或右侧提供填充 ----------------------在EditView上应用此形状
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的边距。
Umesh N answered 2019-01-30T04:47:05Z
7 votes
而不是Button使用LinearLayout与ImageView和TextView里面。 在ImageView和TextView等子项目中,请使用android:duplicateParentState="true"。
Alexey Zakharov answered 2019-01-30T04:47:27Z
6 votes
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"/>
注意:layout_width需要是wrap_content并使用paddingLeft paddingRight drawablePadding来控制间隙。 如果你指定layout_width值会有图标和文本之间的差距,我想一旦给layout_width一个指定值,padding就会测量。
王良海 answered 2019-01-30T04:47:49Z
4 votes
您可以使用按钮填充按钮,您可以使用drawablePadding
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”
Carolina answered 2019-01-30T04:48:19Z
3 votes
您应该考虑使用layer-list
像这样创建一个可绘制文件,将其命名为ic_calendar.xml
android:src="@drawable/ic_calendar_16dp"
android:tint="@color/red"
/>
在布局文件下,
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"
/>
RayChongJH answered 2019-01-30T04:48:53Z
3 votes
我也会把我的答案扔进戒指。 如果要以编程方式执行此操作,可以执行以下操作。
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);
这将填充添加到drawable的末尾,其中end将意味着左/右,这取决于手机是否在LTR或RTL中。
Daniel Ochoa answered 2019-01-30T04:49:22Z
2 votes
您可以使用android:drawableLeft="@drawable/your_icon"将drawable设置为显示在左侧。 要为drawable设置填充,您应该使用android:paddingLeft或android:paddingRight分别设置左/右填充。
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
mohamed aouled issa answered 2019-01-30T04:49:44Z
0 votes
如果可绘制资源的大小是固定的,您可以这样做:
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。
您可以在此示例中看到结果
user3344964 answered 2019-01-30T04:50:26Z
0 votes
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
Srinivas Kokkula answered 2019-01-30T04:50:41Z
-4 votes
尝试使用负填充
喜欢:
android:paddingLeft="-8dp"
Philipe Steiff answered 2019-01-30T04:51:14Z