textview切断android中的一封信

时间:2012-04-20 09:15:52

标签: android

http://dl.dropbox.com/u/24856/Screenshots/android/cutoff.png

这是我的android屏幕截图。文字是“asd”。但是“d”略微被切掉了。这是相关的观点:

        <TextView
            android:id="@+id/stuff"
            android:padding="2dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/other_stuff"
            android:layout_marginTop="33dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="italic" />

是什么导致了这个?

12 个答案:

答案 0 :(得分:20)

所提到的建议都没有工作,结果是一个hacky解决方案,在最后一个斜体字后添加一个空格

答案 1 :(得分:6)

好的,这很奇怪,但我从android:maxLines="1"更改为android:singleLine="true",现在文字没有被删除。

答案 2 :(得分:4)

我通过将TextView的宽度设置为fill_parent而不是wrap_content ...

来修复它

答案 3 :(得分:2)

这是由 Android 为标准文本设置 TextView 剪切矩形而您使用斜体文本引起的。斜体文本向右倾斜,超出文本边界。出于某种原因,Android 没有考虑到这一点。

为了防止这种情况,您可以通过给它一个文本阴影来强制 TextView 在其边界之外绘制。如果将阴影颜色设置为透明,则结果只是未剪裁的文本。将这些添加到您的 TextView

android:shadowColor="#00FFFFFF"
android:shadowDx="48"
android:shadowDy="0"
android:shadowRadius="1"

另外,如果这不起作用,请尝试在父布局上设置 android:clipChildren=false

答案 4 :(得分:1)

这是我的解决方案: 格式化textview和度量。在设置了textview的宽度后,用1个像素添加到测量的宽度。

    TextView textView = new TextView(this);
    textView.setText("Text blah blah");
    textView.setTypeface(typeface, Typeface.BOLD_ITALIC)
    textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
    textView.setLayoutParams(new LayoutParams(textView.getMeasuredWidth() + 1, LayoutParams.WRAP_CONTENT));

为我工作。希望这些帮助。

答案 5 :(得分:0)

可以是填充,尝试将其设置为0dp

布局中还有其他什么吗?

答案 6 :(得分:0)

你可以使用。

android:layout_width="fill_parent"

而不是

android:layout_width="wrap_content"

答案 7 :(得分:0)

我怀疑如果你没有使用斜体文字就不会发生这个问题。我首先测试它,如果使用非斜体文本正确渲染它,那么它看起来像渲染问题,需要在TextView中使用额外的填充来为斜体字母留出空间。

答案 8 :(得分:0)

这里的问题是,斜体属性。您必须为textview设置特定宽度。

答案 9 :(得分:0)

您可以随时创建自定义TextView,例如使用此字体(原因这是 italic 类型的问题):

Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
setTypeface(tf);

更多详情here

答案 10 :(得分:0)

我遇到了同样的问题,但是使用某些字体时却遇到了EditText。我的解决方案也适用于TextView

  1. 使用填充

  2. TextViewCanvas.clipRect(float, float, float, float)方法中使用onDraw进行裁剪-创建自定义Canvas类并覆盖此方法(将其保留为空)。

  3. 下一步,创建自定义TextView并覆盖两个方法onSizeChangedonDraw

onSizeChanged中创建大小为TextView和自定义Canvas的位图。

首先在onDraw中通过将自定义Canvas传递给方法super.onDraw来绘制位图。之后,绘制位图以定位сanvas。

在我对类似问题here的回答中更详细地介绍

答案 11 :(得分:0)

要缩小错误源的范围,请尝试设置android:letterSpacing="0",这是我的案例中截断字母的原因。字母间距太大的另一个提示是,当文本中包含更多字母时,切除部分会变大。