Android TextView 去除顶部和底部空间的方法
当我将以下 XML
包含到 layout 文件中时,我可以看到下图。如果您看到它,您可能会意识到 TextView
有顶部和底部空间。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E1"
android:background="#ff00ff00"/>
我希望删除空格。如何去除它?它叫什么? 如果有人有线索..请告诉我。提前致谢。
When I include the below XML
to layout file, I can see the below image. If you see it, you could realize that the TextView
has top and bottom space.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E1"
android:background="#ff00ff00"/>
I wish to remove the space. How to remove it? What is it called?
If anyone has clue.. please let me know. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
尝试
android:includeFontPadding="false"
看看是否有帮助。根据我的经验,这会有所帮助,但无法将 TextView 尺寸减小到精确的像素完美文本大小。唯一的替代方案(可能会也可能不会给出更好的结果)是稍微作弊并硬连线尺寸以匹配文本大小,例如
"24sp"
而不是"wrap_content"< /code> 为高度。
Try
android:includeFontPadding="false"
to see if it helps. In my experience that will help a little bit, but there's no way of reducing the TextView dimensions to the exact pixel-perfect text size.The only alternative, which may or may not give better results, is to cheat a bit and hard-wire the dimensions to match the text size, e.g.
"24sp"
instead of"wrap_content"
for the height.我也有同样的问题。属性
android:includeFontPadding="false"
对我不起作用。我用这种方式解决了这个问题:I had the same problem. Attribute
android:includeFontPadding="false"
does not work for me. I've solved this problem in this way:android:includeFontPadding="false"
非常好,但它没有准确地得到它。有时您需要边界线的准确性,因此您可以通过应用负边距来自行计算:尝试将底部和顶部边距设置为负值。
像这样:
相应地调整值。
android:includeFontPadding="false"
is pretty good but it does not get it precisely. sometimes you want border line accuracy so you can figure it out yourself by applying negative margins:try setting your bottom and top margins to a negative value.
something like this:
adjust the values accordingly.
这是拯救我们的代码。它是使用 maksimko 中的单声道 C# 代码进行改编的:
仍然需要使用
textView.setIncludeFontPadding(false )
因为我们将TextViews
与不同的字体大小对齐。This is the code that saved our day. It was adapted using mono C# code from maksimko:
Still had to play around with
textView.setIncludeFontPadding(false)
because we were aligningTextViews
with different font sizes.我遇到了同样的问题。
这是一个很好的答案:如何对齐文本到 TextView 的顶部?
但是代码还没有完成,并且不支持所有字体大小。将行更改
为
完整的 C# 代码(单声道)删除顶部偏移量:
I faced the same problem.
Here's a good answer: How to align the text to top of TextView?
But code is little unfinished and don't support all font sizes. Change the line
to
Complete C# code (mono) removes top offset:
只是想添加到 DynamicMind的回答,您看到 TextView 周围有间距的原因是9 块背景中的填充默认使用。
9 补丁技术允许您指定一个内容区域,这实际上是填充。除非您明确设置视图的填充,否则将使用该填充。例如,当您以编程方式将 9 块背景设置为已设置填充的视图时,它们将被覆盖。反之亦然,如果您设置填充,它们会覆盖 9 补丁背景设置的内容。
不幸的是,在 XML 布局中无法确定这些操作的顺序。我认为从 TextView 中删除背景会有帮助:
Just wanted to add to DynamicMind's answer that the reason why you see spacing around your TextViews is padding in 9-patch backgrounds they use by default.
9-patch technology allows you to specify a content area which is, effectively, padding. That padding is used unless you set the view's padding explicitly. E.g., when you programmatically set a 9-patch background to a view which had paddings set, they are overridden. And vise-versa, if you set paddings they override what was set by 9-patch background.
Unfortunately, in the XML layout it's not possible to determine the order of these operations. I think just removing the background from your TextViews would help:
修改了this答案,以使用kotlin类并扩展
AppCompatTextView
,修剪垂直填充。它允许设置
android:fontFamily
。为了提高性能,calculateTextParams()
方法从onDraw()
中移出。未测试多行文本:Modified this answer a little bit to use kotlin class and extend
AppCompatTextView
, trimming vertical padding.It allows setting
android:fontFamily
. MethodcalculateTextParams()
moved fromonDraw()
for performance. Not tested for multiple lines of text:您定义了布局边距吗?
例如:
否则,如果您的文本视图包含在 LinearLayout 或其他容器内,则该容器也具有填充或边距。
Have you defined a layout margin?
For example:
Otherwise, if your text view is wrapped inside a LinearLayout or other container, then that cold have either padding or a margin too.
根据您想要的 editbox_background 更改它来使用它。
因为android提供了一些内置的后台,如上面的代码,根据您的要求进行选择。
也许它对你有帮助。
use it according to you change it that you want editbox_background.
because android provide some build in background like above code choose according to your requirement.
May be it is help full to you.
在 LinearLayout 内部,默认填充可能是一个问题。尝试将其设置为 0dp。这对我有用。
Inside a LinearLayout the default padding might be an issue. Try setting it to 0dp. It worked for me.
TopAlignedTextView代码的答案:TopAlignedTextView@GitHub
通过布局使用它:
The answer of TopAlignedTextView code:TopAlignedTextView@GitHub
use it by layout:
我解决这个问题的方法非常老套,但我设法通过将文本视图的高度设置为静态并摆弄它直到它几乎适合文本,使文本位于我想要的位置。就我而言,我使用的字体样式的高度为 64sp,因此我将 textview 的高度设置为 50sp,效果很好。我还必须将 foreground_gravity 设置为底部。
My way for fixing this is pretty hacky, but I managed to get the text to sit where I wanted by setting the height of the text view as static and fiddling with it until it just barely fit the text. In my case, the font style I was using had a height of 64sp so I set the height of my textview to 50sp and it worked okay. I also had to set foreground_gravity to bottom.