Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:TextView:删除顶部和底部的间距和填充_Android_Textview_Padding_Spacing - Fatal编程技术网

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-from
findviewbyd(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"