这是我的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" />
是什么导致了这个?
答案 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
:
使用填充
以TextView
在Canvas.clipRect(float, float, float, float)
方法中使用onDraw
进行裁剪-创建自定义Canvas
类并覆盖此方法(将其保留为空)。
下一步,创建自定义TextView
并覆盖两个方法onSizeChanged
和onDraw
。
在onSizeChanged
中创建大小为TextView
和自定义Canvas
的位图。
首先在onDraw
中通过将自定义Canvas
传递给方法super.onDraw来绘制位图。之后,绘制位图以定位сanvas。
在我对类似问题here的回答中更详细地介绍
答案 11 :(得分:0)
要缩小错误源的范围,请尝试设置android:letterSpacing="0"
,这是我的案例中截断字母的原因。字母间距太大的另一个提示是,当文本中包含更多字母时,切除部分会变大。