4

Text View Background の形状を作成します

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:startColor="#800e1520"
    android:endColor="#801e252f"
    android:angle="45"/>
<padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
<corners android:radius="8dp" />

私のテキストビューは次のとおりです。

 <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/rel1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:background="@drawable/rounded_corners"
        android:gravity="right"
        android:lineSpacingExtra="6dp"
        android:supportsRtl="true"
        android:text="@string/hello_world"
        android:textColor="#FFFFFF" />

テキストがこのように短い場合テキストボックス画像

しかし、テキストが大きすぎると背景が表示されず、Eclipse logcatが表示されます

Shape round rect too large to be rendered into a texture (424x5884, max=2048x2048)

それを解決する方法は?ありがとうございました

4

3 に答える 3

5

編集:最も簡単な解決策は、丸みを帯びた角を取り除くことです。丸みを帯びた角を削除して単純な長方形を使用すると、ハードウェア レンダラーはバックグラウンド レイヤー用に 1 つの大きなテクスチャを作成しなくなり、テクスチャ サイズの制限に達することはなくなります。


簡単な回避策の 1 つは、そのビューのソフトウェア レンダリングに戻すことです

View view = findViewById(R.id.textView1);
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

...しかし、ここで同様の問題が発生し、同じ結果が得られました。ビュー (およびその子) はレンダリングされませんでした。

XML からビューのレイヤー タイプを設定することもできます。

<TextView android:layerType="software" />

ソフトウェアの代わりにlayerTypeを「none」に設定すると、ビューが描画されるように見えますが、試した簡単なテストでは、角を丸くせずに描画しました。

別のアプローチは、角丸長方形をレンダリングする別の方法を使用することです。

  • 自分でパスをクリッピングして描画するonDraw
  • を使用するPaintDrawable(角の丸みをサポートしますが、コードから設定する必要があります)
  • 長方形を 3 つのスライスに分割します。上部 (角が丸い)、中央 (単色のみ)、下部 (角が丸い) です。
于 2013-01-28T23:46:07.570 に答える