2016-11-18 40 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 –