使用复合可绘制对象在 TextView 中设置实际文本填充
Posted
技术标签:
【中文标题】使用复合可绘制对象在 TextView 中设置实际文本填充【英文标题】:Set actual text padding in TextView with compound drawables 【发布时间】:2012-09-09 10:45:29 【问题描述】:我有一个ListView
填充有一个ArrayAdapter
。对于项目,我只使用一个 TextView
布局。我希望某些行设置复合可绘制对象。
问题:有没有办法为TextView
中包含的实际文本设置填充,这样复合可绘制对象也不会得到填充?其他解决方案是锁定文本的宽度。我需要在我的布局中添加ImageViews
吗?
【问题讨论】:
我也很好奇,你找到解决办法了吗? 不。我刚刚添加了一些ImageView
s,这就是我的解决方案。我什至得到了这个问题的Tumbleweed
徽章,所以我想这是不可能的。
哈,有趣。我确实看到了一种在图像上放置填充的方法,而不是在文本上放置填充。
那是哪种方式?我认为setCompoundDrawables
方法为您提供了该选项,请告诉我您的解决方案。
txtView.setCompoundDrawablePadding (int pad);或者您可以设置图像的边界,然后使用 setCompoundDrawablesWithIntrinsicBounds。我现在正在和他们一起玩,看看他们是如何工作的!
【参考方案1】:
很简单:
android:drawablePadding="5dp"
它会根据方向自动使用填充。
【讨论】:
感谢您的回答。那时我已经解决了我的问题,我没有资源来尝试你的方法。 方法仅供参考setCompoundDrawablePadding
【参考方案2】:
我将此作为答案发布,以便看到此帖子的人找到答案。
没有直接的方法只为文本设置填充,但您可以为整个 TextView
设置 positive 填充并为可绘制对象设置 negative 填充.
【讨论】:
【参考方案3】:改进 Gio 的建议,这可能是针对过时的 API/SDK...
TL:DR - 只需应用android:drawablePadding
以增加图像和文本之间的距离。
说明:
android:drawablePadding
现在在 CompoundDrawable
和原始 View
之间应用填充,在这种情况下是包含文本的 TextView;
android:padding
和修饰符现在适用于整个组,包括所有化合物。
做消极积极的黑客似乎不再起作用了。
因此,根据可绘制位置(drawableTop/Left/...),填充将应用在与它相反的方向上,紧邻可绘制对象,也就是在两个元素之间。例如,将drawablePadding="10dp"
应用于左侧放置的可绘制对象将具有与使用paddingRight="10dp"
将单个ImageView
设置到TextView 左侧的类似效果(至少在填充方面)。
【讨论】:
我猜它是针对一个过时的 SDK,我还希望有一些旧版支持。当时我想不出比我发布的更好的解决方案。以上是关于使用复合可绘制对象在 TextView 中设置实际文本填充的主要内容,如果未能解决你的问题,请参考以下文章
如何在xml中设置复合可绘制文本视图的高度和宽度? [关闭]