2016-11-18 65 views
1

我試圖敲擊textView中的字符串時,我選擇它,然後當我第二次選擇它將未言不虛,這是爲我工作,但問題是當我選擇這個TextView的第三次也不會被stroken,所以任何一個可以幫助我PLZ,這是我的代碼:在文本視圖中更改穿透選定的文本

public class MainActivity extends AppCompatActivity { 
TextView txt; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txt = (TextView) findViewById(R.id.txt); 

     strike(); 

} 


public void strike() { 

    txt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      txt.setPaintFlags(txt.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
      //to remove strike 
      txt.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        txt.setPaintFlags(0); 


       } 
      }); 
     } 
    }); 
} 

}

+0

我建議在strike()中設置一個斷點,看看它是否按照你期望的方式執行代碼。 –

回答

1

你的問題是,您選擇先覆蓋後的onClickListener點擊,所以偵聽器只會在第一次點擊後清除油漆標誌。

txt.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(txt.getPaintFlags() == 257){ 
      txt.setPaintFlags(txt.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
     } else if(txt.getPaintFlags() == 273){ 
      txt.setPaintFlags(257); 
     } 
    } 
}); 
+0

它不起作用:( – honeyyy

+0

這是因爲我不知道什麼返回txt.getPaintFlags,檢查它的調試模式,並發現什麼條件告訴你文本沒有油漆標誌:P –

+0

你有任何問題@honeyyy –