Android:TextView:删除顶部和底部的间距和填充
当我有一个文本中有一个Android:TextView:删除顶部和底部的间距和填充,android,textview,padding,spacing,Android,Textview,Padding,Spacing,当我有一个文本中有一个\n的文本视图时,在右边我有两个单行文本视图,一个在另一个下方,中间没有间隔。我为所有三个TextViews设置了以下内容 android:lineSpacingMultiplier="1" android:lineSpacingExtra="0pt" android:paddingTop="0pt" android:paddingBottom="0pt" 左TextView的第一行与右上TextView完美对齐 左侧TextView的第二行略高于右下角TextVi
\n
的文本视图时,在右边我有两个单行文本视图,一个在另一个下方,中间没有间隔。我为所有三个TextView
s设置了以下内容
android:lineSpacingMultiplier="1"
android:lineSpacingExtra="0pt"
android:paddingTop="0pt"
android:paddingBottom="0pt"
左TextView
的第一行与右上TextView
完美对齐
左侧TextView
的第二行略高于右下角TextView
的第二行
似乎TextView
s的顶部和底部都有某种隐藏的填充。如何删除该选项?您可能希望尝试将左文本视图的底部与右二文本视图的底部对齐。据我所知,这是大多数小部件固有的,手机制造商之间的“填充”量不同。这种填充实际上是图像边框和9面片图像文件中的图像之间的空白
例如,在我的Droid X上,微调器小部件比按钮有额外的空白,这使得微调器与按钮内联时看起来很尴尬,但在我妻子的手机上,相同的应用程序没有同样的问题,看起来很棒
我唯一的建议是创建自己的9个补丁文件,并在应用程序中使用它们
啊,安卓带来的痛苦
编辑:澄清填充与空白。这也让我很恼火,我发现答案是字体本身实际上有额外的空间,而不是文本视图。这是相当恼人的,来自文档发布背景,Android对排版元素的控制有限。我建议使用一种定制字体(比如Bitstream Vera Sans,它被授权进行重新分发),但可能没有这个问题。不过,我不确定是否确实如此
setIncludeFontPadding (boolean includepad)
或者在XML
中,这将是:
android:includeFontPadding="false"
设置TextView
是否包含额外的顶部和底部填充,以便为高于正常上升和下降的口音留出空间。默认值为真。我感觉到你的痛苦。我已经尝试了上面的所有答案,包括将includeFontPadding设置为false,这对我没有任何帮助
我的解决方案<TextView
上的code>layout_marginBottom=“-3dp”
为底部提供了解决方案,
砰
尽管在布局上的-3dp\u marginTop
失败了……呃。请参见以下内容:
EditText的背景图像似乎有一些透明像素,这些像素也添加了填充
一种解决方案是将EditText的默认背景更改为其他内容(或者什么都不更改,但EditText的无背景可能是不可接受的)。这可以通过设置android:backgroundxml属性来实现
android:background="@drawable/myEditBackground"
使用额外的ImageView,我们可以将TextView设置为与ImageView对齐的基线,并将ImageView上的android:baselineAlignBottom
设置为true,这将使ImageView的基线位于底部。其他视图可以使用与TextView基线相同的ImageView底部对齐
然而,这只修复了底部的填充,而不是顶部。我搜索了很多正确的答案,但没有找到一个答案,可以准确地删除文本视图中的所有填充,但最后在检查后,找到了一个解决单行文本的方法
android:includeFontPadding="false"
android:lineSpacingExtra="0dp"
将这两行代码添加到TextView
xml中就可以了。
第一个属性删除为重音保留的填充,第二个属性删除为保持两行文本之间的适当间距而保留的间距
确保不要在多行文本视图中添加lineSpacingExtra=“0dp”
,因为这可能会使外观笨拙
我删除了自定义视图中的间距--NoAddingTextView
我认为这个问题可以这样解决:
<TextView
android:id="@+id/leftText"
android:includeFontPadding="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="Hello World!\nhello world" />
<TextView
android:id="@+id/rightUpperText"
android:includeFontPadding="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/leftText"
android:layout_alignTop="@+id/leftText"
android:textSize="30dp"
android:text="Hello World!" />
<TextView
android:id="@+id/rightLowerText"
android:includeFontPadding="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/leftText"
android:layout_below="@+id/rightUpperText"
android:textSize="30dp"
android:text="hello world" />
结果如下:
虽然rightLowerText中的特殊字符行看起来比leftText中的第二行高一点,但它们的基线仍保持对齐 因为我的要求是覆盖现有的textView-get-fromfindviewbyd(getResources().getIdentifier(“xxx”、“id”、“android”)
,所以我不能简单地尝试其他答案的onDraw()
但我刚刚找到了解决问题的正确步骤,以下是Layout Inspector的最终结果:
因为我想要的只是删除顶部空格,所以我不必选择其他字体来删除底部空格
以下是修复此问题的关键代码:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
第一个键是设置自定义字体“fonts/myCustomFont.otf”,它在底部有空格,但在顶部没有空格。打开otf文件并单击android Studio中的任何字体,您可以很容易地解决这个问题:
如您所见,底部的光标有额外的间距,但顶部没有,因此它解决了我的问题
第二个键是,您不能简单地跳过任何代码,否则它可能无法工作。这就是为什么你会发现一些人评论说答案有效,而另一些人评论说答案无效
让我们举例说明如果我移除其中一个会发生什么
无setTypeface(mfont)代码>:
无setPadding(0,0,0,0)代码>:
不带setIncludeFontPadding(假)代码>:
没有3个(即原件):
只需使用
android:padding="0dp"
简单有效的方法:
setSingleLine();
setIncludeFontPadding(false);
如果不起作用,则尝试在代码上方添加以下内容:
setLineSpacing(0f,0f);
// and set padding and margin to 0
如果需要多行,可能需要通过temp单行文本视图(删除填充前后)精确计算填充顶部和底部的高度,然后应用“降低高度”结果w
setSingleLine();
setIncludeFontPadding(false);
setLineSpacing(0f,0f);
// and set padding and margin to 0
android:lineSpacingExtra="-8dp"
android:firstBaselineToTopHeight="0dp"
android:includeFontPadding="false"
text.firstBaselineToTopHeight = 0
text.includeFontPadding = false
<LinearLayout
android:layout_width="60dp"
android:layout_height="wrap_content"
>
<TextView
style="@style/MyTextViews.Bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/yellow"
android:textSize="48sp"
android:layout_marginTop="-11dp"
android:includeFontPadding="false"
tools:text="1"/>
</LinearLayout>
android:fontFamily="monospace"
android:includeFontPadding="false"