android drawableleft 方法,android:drawableLeft边距和/或填充

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值