2012-04-19 1 views
1

によって異なる色のストライキを作成し、私はHTMLを使用しようとしたが、「私はまた、この方法が、ドンの下にしようとした私は赤のように、黒とstrikthroughなどのテキストの色とのTextViewを作成しようとしています

String styledText = "<span style='color:red;text-decoration:line-through'><span style='color:black'>TEXT</span></span>";  
myText.setText(Html.fromHtml(styledText)); 

を動作するようですしませんトンあなたはTextViewあなたは単にあなたがあなたの色でストライク線を描画するTextViewのサブクラスを作成することができます内のすべてのテキストを打つしたい場合は取り消し線

myText.setPaintFlags(myText.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 

答えて

0

に異なる色を定義します方法を知っています選択。

+0

これはうまくいくはずですが、私は単純な解決策を探しています。 – mkso

+0

@mkso:実際、私はそれがslaytonよりもはるかに簡単になるとは思わない。内部的には、取り消し線のテキストは 'StrikeThroughSpan'で表され、' StrikeThroughSpan'は '(Text)Paint'オブジェクトにフラグを設定します。そのクラスは残念ながら描画にネイティブコードを使用していますが、Javaソースコードにはストライキの色に影響を与える変数はありません(既に自分自身を発見したようです)。私はあなたが異なる色にしたい場合は、図面を手動で行う必要があると思います。 –

+0

@mkso、これは単純な解決策です。基本的には、オーバーライドする必要がある唯一の方法は 'onDraw'メソッドです。最初に 'super.onDraw()'を呼び出してから、ストライクをcolorに設定してから線を引いてください。その本当に簡単 – slayton

1
@Override 
protected void onDraw(Canvas canvas) { 

    super.onDraw(canvas); 
    drawStrikeThroughPaint(canvas); 
} 

public void drawStrikeThroughPaint(Canvas canvas) { 
    canvas.drawLine(0, getMeasuredHeight()/2, getMeasuredWidth(), getMeasuredHeight()/2, strikethroughPaint); 
} 
1

パーティーに遅れていますが、レイヤーリストを使用してtextviewバックグラウンドの上に配置してください。完璧に動作します。披露させて。

ドロワブルで作成するには、ファイルが strikethru.xmlというフォルダ:3DPのパディング右は裏抜けがもっと出てくる可能

<TextView 
           android:id="@+id/tv_toolbar_prod_price" 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 

           android:paddingRight="3dp" 
           android:text="1,290 B"  

android:background="@drawable/strikethru_line" 
           android:textColor="#070707" 
           android:textSize="13sp" /> 

:あなたのTextViewで、その後

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FFFFFF"/> 
     </shape> 
    </item> 
    <item> 
     <shape android:shape="line"> 
      <stroke android:width="1dp" 
       android:color="#8d8d8d"/> <!-- adjust color you want here --> 
     </shape> 
    </item> 
</layer-list> 

これを行います実際の世界の効果を与えるためにテキストから。

関連する問題