26

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" />

关于是什么原因造成的任何想法?

4

12 回答 12

24

最终得到了一个 hacky 解决方案,在最后一个斜体字符后添加一个空格

于 2012-05-02T03:23:49.897 回答
6

好的,这很奇怪,但我从 更改android:maxLines="1"android:singleLine="true"现在文本没有被截断。

于 2016-05-24T05:51:55.540 回答
4

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

于 2012-12-10T07:29:38.613 回答
2

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

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

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

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

于 2021-05-01T17:14:53.830 回答
1

这是我的解决方案:格式化 textview 并测量。之后设置宽度为 1 像素的 textview 添加到测量的宽度。

    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));

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

于 2015-04-06T09:55:18.643 回答
0

您可以使用 。

android:layout_width="fill_parent"

而不是

android:layout_width="wrap_content"
于 2012-04-20T09:19:18.920 回答
0

我怀疑如果您不使用斜体文本,则不会出现此问题。我会先测试一下,如果使用非斜体文本正确呈现它,那么它看起来像一个呈现问题,需要在 TextView 中使用额外的填充来解决斜体字母的空间。

于 2012-04-20T09:22:22.497 回答
0

这里的问题是斜体属性。你必须为你的文本视图设置一个特定的宽度。

于 2012-04-20T09:22:27.710 回答
0

您始终可以创建将使用例如此字体的自定义 TextView(因为实际上这是斜体类型的问题):

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

更多细节在这里

于 2014-06-23T15:01:33.397 回答
0

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

  1. 使用填充

  2. TextView使用Canvas.clipRect(float, float, float, float)inonDraw方法进行裁剪一样 - 创建自定义Canvas类并覆盖此方法(将其留空)。

  3. 接下来创建自定义TextView并覆盖两个方法onSizeChangedonDraw.

onSizeChanged创建具有TextView我们自定义大小的位图Canvas

首先通过将我们的自定义传递给方法 super.onDraw 来onDraw绘制位图。Canvas之后将位图绘制到目标 сanvas。

在我对类似问题的回答中更详细

于 2018-12-21T15:06:49.843 回答
0

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

于 2020-03-24T13:06:24.960 回答
0

使用此代码:

textview.setShadowLayer(25f, 0f, 0f, 0)
于 2021-12-19T07:48:59.937 回答