2016-11-18 9 views
1

Я пытался ударить строку в текстовом элементе, когда я его выбираю, тогда, когда я выберу его во второй раз, он будет неактивен, это работает на меня, но проблема в том, когда я выбираю этот TextView в третий раз он не будет stroken, поэтому любой может помочь мне плз, это мой код:Измените промах в выбранном тексте в текстовом элементе

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

Ваша проблема в том, что Youre перекрывая 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

thats, потому что я не знаю, что возвращает txt.getPaintFlags, проверьте его в режиме отладки и узнайте, какое условие говорит вам, что у текста нет флагов краски: P –

+0

У вас возникли проблемы @honeyyy –