TextView不会粘在右上角

时间:2013-10-24 13:41:05

标签: android android-layout user-interface textview padding

我在textview对象中有不必要的填充。我们只关注下面图片右上角的文本视图,1.486.91。我的要求是文本绘制到其自己边界的右上角,因此它对DIJACOR和“{1}}的”右对齐“是”最顶级的“。我尝试了+0.01gravity="top|right"includeFontPadding=false,但无济于事。对于第二种情况,渲染结果在paddings=0之后显示一些额外的空格,使其不与下面的6.91对齐。任何人都可以与我分享如何解决这个问题?谢谢!

grid view object

以下是我定义textView对象的方法:

-0.01

Root ViewGroup:

<TextView
    android:id="@+id/priceLast"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="0dp"
    android:gravity="top|right"
    android:includeFontPadding="false"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:singleLine="true"
    android:text="@string/price"
    android:textColor="@color/dark_green"
    android:textIsSelectable="false"
    android:textSize="24sp"
    android:textStyle="bold" />

7 个答案:

答案 0 :(得分:3)

对于情况#2,原因是在大多数字体中,所有数字都具有相同的字符宽度(以像素为单位)。因此数字“1”和“8”采用相同数量的宽度像素。原因是你可以在彼此的顶部写数字,数字将始终对齐。这意味着像“4.1”这样的字符串将比“4.8”右边有更多的空像素。 解决方案是使用每个数字具有紧凑宽度的字体,或者使用您自己的视图将数字呈现为位图,找到最右边的非空像素,并移动位图以使其与右对齐。

答案 1 :(得分:2)

您可以看到的填充是默认的字体填充,并且由于字体大小不同,您会遇到一些不匹配。

您可以尝试多种方法来解决此问题:

1)尝试修复TextViews的高度(即DIJACOR和1.48), 例如: android:layout_height =“100dp”,这将解决您的顶部对齐问题。您可以根据需要调整高度。

2)“1”后的额外空格。如果你仔细观察到空间也在1.48之后,在“1”之后。这意味着字体在“1”之后有额外的空格。如果我们的假设是正确的,那么使用一些不同的字体将解决这个问题。尝试使用: 的机器人:fontFamily中= “无衬线” 要么 的机器人:fontFamily中= “无衬线光” 要么 的机器人:fontFamily中= “无衬线冷凝” 要么 的机器人:fontFamily中= “无衬线薄”

答案 2 :(得分:0)

我认为6.91的额外空间在字体内部,你无法帮助它。为了让它一直到父母的右上角,确保父母没有填充。

答案 3 :(得分:0)

我认为它因为1. 1比9更薄并且所有数字都包含在默认区域中。但您可以添加android:paddingRight="-1dp"。它不健康但应该有效。

答案 4 :(得分:0)

我试图用标准字体模仿你的布局,我认为这个填充因为DIJACOR字符串和1.78之间的大小差异而弹出。也许你可以尝试将marginTop添加到DIJACOR字符串?如果DIJACOR专栏的成员与DIJACOR有关,那么添加marginTop将不会显着改变你的布局。

From graphical layout view (equals to view in emulator)

答案 5 :(得分:0)

我想说,删除DIJACOR TextView和1.48 TextView的填充,并为两者添加边距Top。或者将它们添加到线性布局,您可以根据需要发布paddingTopmarginTop

答案 6 :(得分:0)

您的问题是不同的字体大小。有些字符高于9,就像Î。这些字符也需要高于通常数字和字母的空间。所需空间不是字体间距,因此XML指令无济于事。 Android使用“查看高度”来对齐视图,这就是您构思的顶部边框不匹配的原因。

我面临同样的问题,没有简单的方法。你可以做的最好的事情是使用marginTop来获得带有负边距的较大文本,但是当涉及到动画时可能会出错。或者,您也可以将paddingTop添加到其他文本视图中。