63
<TextView android:id="@+id/prodLbl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:textColor="#FFFFFF"
    android:textSize="30dip"
    android:textStyle="italic"
    android:text="Magnifico"
    />

少なくとも 480x800 エミュレーターまたは Nexus One では、右端のキャラクターから数ピクセルが切り取られているようです。

私にはバグのように見えますが、私は単なる Android 初心者です。左右にマージンを追加しようとしましたが、それでもクリッピングが続きます。最後に、私のハックは、テキストの両側に単一のスペースを追加することでした. 他の解決策はありますか?

4

14 に答える 14

28

android:layout_width="wrap_content"、ラップされたコンテンツのレンダリング用の長方形を提供します。通常のテキスト (斜体ではない) の場合はすべてうまく機能します。

テキストをitalic有効にすると、ラップされたテキストが四角形に収まるように試行されるため、右端の文字が切り取られない場合 ( 、 、 など) を除いて切り取ら.)ます1

提案された解決策は、テキストの最後にスペースを入れることです(またはそれ以上のもの??)

PS:android:gravity="right"テキストが一番右に押し出されるため、これも当てはまりますテキストがある場合italic、同じ問題に直面します。

于 2011-01-19T21:10:57.507 に答える
26

Unicode の改行なしスペース文字(\u00A0)を使用することもできます。

于 2012-03-03T07:08:52.913 に答える
13

" \"string.xml のすべての文字列の末尾に追加しました。\はエスケープ文字なので、この方法で問題を解決できましたが、この解決策は厄介です。お役に立てれば。

于 2011-04-14T16:46:47.483 に答える
7

テキストの最後にスペースを追加するだけです。XMLでは、最後に追加する必要があり\u0020ます。そうしないと、XMLはデフォルトで最初/最後の空白を無視します。

于 2013-01-04T21:52:06.100 に答える
6

別の解決策を見つけました (を使用して 4.1.2 および 4.3 でテストwrap_content)。拡張TextViewまたはクラス化する場合、次の方法でメソッドEditTextをオーバーライドできます。onMeasure

@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    final int measuredWidth = getMeasuredWidth();
    final float tenPercentOfMeasuredWidth = measuredWidth * 0.1f;
    final int newWidth = measuredWidth + (int) tenPercentOfMeasuredWidth;

    setMeasuredDimension(newWidth, getMeasuredHeight());
}
于 2013-10-10T07:27:58.607 に答える
5

HAIR SPACE を文字列に追加できます

<string name="hair_space">&#x200A;</string>

String hairSpace = getContext().getString(R.string.hair_space);
textView.setText(hairSpace + originalString + hairSpace)
于 2016-06-02T08:08:43.313 に答える
2

ソースを見ると、影を設定するとクリップの四角形が拡張されることがわかりました。

トリックは、キャラクターのすぐ後ろに見えない影を設定することです。

例えば:

android:shadowRadius="2"
android:shadowDx="2"
android:shadowColor="#00000000"

TextViewこのソリューションは、余分な文字を追加するときに発生する可能性のある幅を拡張しないため、より優れていると思います(これは背景でより明確になります)。

于 2013-07-17T16:26:56.097 に答える
2

これは、「wrap_content」だけでなく、固定幅の TextView にも適用されます。一部のコメンターがほのめかしているように、問題がバージョン固有のものであるかどうかはわかりません。Honeycomb のすべてのバージョンでこの問題が発生します。私が見たところ、マージン、パディングを設定したり、固定幅を使用したり、真の斜体のカスタム書体を使用したりしても、問題は解決しません。

于 2012-02-15T23:50:13.360 に答える
1

これが私の解決策です:テキストビューをフォーマットして測定します。その後、テキストビューの幅を 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));

私のために働いています。これらが役立つことを願っています。

于 2015-04-06T09:58:29.417 に答える
0

私も同じ問題を抱えていて、HTML 経由で改行しないスペース エンティティを使用しました。

textView.setText("Magnifico" + Html.fromHtml("&nbsp;");
于 2018-07-20T10:10:52.637 に答える
-3

TextView の右側に 3dp パディングを追加します。1dp と 2dp で試してみましたが、3dp で十分に機能するように見えました。

android:paddingRight="3dp"

于 2011-05-17T04:14:54.567 に答える