2012-09-30 119 views
1

我有一個Android程序與一堆文本視圖。最初,所有這些觀點都沒有影子。Android如何刪除文字陰影?

當我按下特定的切換按鈕時,我想讓這些textViews脫穎而出。

理想情況下,我想爲它們添加文字陰影發光效果。這個我 成功沒有問題做了與textView.setShadowLayer(半徑,DX,DY,顏色)

的問題是,如果我再次按同一個切換按鈕(這使得陰影出現), 我需要刪除陰影,使文本不再突出顯示。

我試圖設置陰影層爲半徑0和透明顏色#00FFFFFF,#00000000和顏色#FFFFFFFF,#FF000000。然而,這些都沒有設置textView返回 到它出現的原始方式。

關於如何去除陰影的任何想法。 (我並不需要刪除它,我只是希望文本以與添加之前相同的方式顯示)

主要目標是使用切換按鈕打開/關閉特定文本視圖的文本高亮顯示和除了使用陰影之外,我願意接受其他方法。理想情況下,我想使用陰影,但任何其他想法突出顯示文字都很好。

我使用這種風格的TextView的佈局XML

<style name="second"> 
    <item name="android:textColor">@drawable/buttonBabyBlue</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textSize">@dimen/second_text_size</item> 
    <item name="android:lines">1</item> 
    <item name="android:background">@drawable/baseGray</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_width">0dip</item> 
    <item name="android:layout_weight">8.5</item> 
    <item name="android:gravity">bottom|left</item> 
    <item name="android:layout_gravity">bottom</item> 
</style> 

;

(這部分是我textLayer.setShadow(0,0,0,0),得到的回答後追加當我按下,這使得該按鈕的視圖有陰影

text.setShadowLayer(GLOW_RADIUS, GLOW_DX, GLOW_DY, R.drawable.buttonBabyBlue); 
text.setTextColor(R.drawable.baseGray); 

然後去除陰影

text.setShadowLayer(0, 0, 0, 0); 
text.setTextColor(R.drawable.buttonBabyBlue); 

就是討厭我有圖片展示,並上載他們,但他們 不讓我告訴他們,怕垃圾郵件

回答

6

呼叫textview.setShadowLayer(0,0,0,0)的清除陰影層。


有一個在PaintclearShadowLayer()方法,但在內部太調用setShadowLayer所有零個參數。所以看起來這不適合你。

我能想到的唯一方法是覆蓋onDraw方法。保持使用影子參數設置的TextPaint對象。

@Override 
void setShadowLayer(.....) {     // do not call super 
    paintWithShadowLayer.setShadowLayer(....); // the other with shadow layer set 
} 

@Override 
void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    ... 
    if (bToggleON) { 
     canvas.drawText(text, index, count, x, y, paintWithShadowLayer); 
    } else { 
     canvas.drawText(text, index, count, x, y, getPaint()); 
    } 
    ... 
} 
+0

這並不工作,影子被刪除,但文本視圖現在是一個較暗的顏色比原來的表現.. – phriendtj

+0

感謝您的答案,但我想我將不得不找一些其他突出顯示這些文本視圖的方式。我有兩個其他的想法,1.將背景改爲別的,然後回來,2。使用FrameLayout,將相同事物的一些低alpha文本視圖放在現有的視圖上,然後以某種方式刪除它們,第一種方法可能看起來不太好,第二種方法可能很難在各種屏幕尺寸上工作,並且會因爲額外視圖的數量的壓力性能 – phriendtj

+0

我必須澄清,我不知道爲實際顏色資源vs可繪製資源設置文本顏色是非常不同的事實,我認爲可繪製wsa只是一個顏色與alpha值,但情況並非如此... setShadowLayer(0,0,0,0)在正確使用顏色/繪圖時確實有效 – phriendtj