2

私の要件は、テキストを虹色のテキストや太字のような多色で TextView に表示することです。どうすればこれを実現できますか。また、Java コードを使用して動的に表示する必要があります。

TextView text=new TextView(context);
                        text.setText(status);
                    text.setBackgroundResource(R.drawable.grd_btn);
                    text.setGravity(Gravity.CENTER);
                    text.setPadding(2, 0, 2, 0);
                    text.setTypeface(font2,Typeface.BOLD);
                    text.setTextColor(Color.WHITE);
4

3 に答える 3

9

遅れてすみません、私の友人です。あなたの問題に取り組む必要があり、しばらく時間がかかりました。最初に出力を行います

ここに画像の説明を入力

したがって、上記の出力が必要な出力であると仮定すると、ここにコードが表示されます。

xml ファイル

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world"/>

res ファイル (strings.xml など)

<color  name="violet">#9400D3</color>
<color  name="indigo">#4B0082</color>
<color  name="blue">#0000FF</color>
<color  name="green">#00FF00</color>
<color  name="yellow">#FFFF00</color>
<color  name="orange">#FF7F00</color>
<color  name="red">#FF0000</color>

あなたのJavaファイル

     TextView textView = (TextView)findViewById(R.id.textView1);
        Shader textShader=new LinearGradient(0, 0, 0, 20,
                new int[]{getResources().getColor(R.color.violet),getResources().getColor(R.color.indigo),
                getResources().getColor(R.color.blue),
                getResources().getColor(R.color.green),
                getResources().getColor(R.color.yellow),
                getResources().getColor(R.color.orange),
                getResources().getColor(R.color.red)},
                new float[]{0,0.2f,0.4f,0.6f,0.8f,0.9f,1}, TileMode.CLAMP);
        textView.getPaint().setShader(textShader);
        textView.setTextSize(20);

それでおしまい。そして、あなたの大胆なスタイルについては、私の以前の回答の下のリンクに従ってください。

https://stackoverflow.com/a/5169604/603744

于 2013-01-21T12:40:12.043 に答える
1
 String text = "This is <font color='red'>red</font>. This is <font     color='blue'>blue</font>.";
 textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
 textView.setTypeface(null,Typeface.BOLD);
于 2013-01-21T12:19:52.787 に答える
0

私にはこれが一番簡単でした

すべてのクレジット: https://gist.github.com/ishitcno1/0c8bcb8ad72cb0879acb

public class RainbowTextView extends TextView {
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    int[] rainbow = getRainbowColors();
    Shader shader = new LinearGradient(0, 0, 0, w, rainbow, 
        null, Shader.TileMode.MIRROR);

    Matrix matrix = new Matrix();
    matrix.setRotate(90);
    shader.setLocalMatrix(matrix);

    getPaint().setShader(shader);
  }

  private int[] getRainbowColors() {
    return new int[] {
      getResources().getColor(R.color.rainbow_red),
      getResources().getColor(R.color.rainbow_yellow),
      getResources().getColor(R.color.rainbow_green),
      getResources().getColor(R.color.rainbow_blue),
      getResources().getColor(R.color.rainbow_purple)
    };
  }
}
于 2015-12-15T15:54:20.710 に答える