2016-11-18 3 views
1

Ich habe versucht, eine Zeichenfolge in einem textView zu treffen, wenn ich es auswähle, wenn ich es ein zweites Mal wähle wird es nicht ausgeführt, das funktioniert für mich, aber das Problem ist als ich dieses Textview ein drittes Mal wählen wird es nicht stroken wird, kann so jemand mir helfen plz, dies ist mein Code:Durchgestrichener Text in ausgewähltem Text in einem TextView

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

Ich schlage vor, einen Unterbrechungspunkt in strike() zu setzen und zu sehen, ob es den Code ausführt, wie Sie es erwarten. –

Antwort

1

Ihr Problem ist, dass youre die OnClickListener zwingende nach dem ersten Klicken Sie auf, damit der Listener nur die Paint-Flags nach dem ersten Klick löscht.

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

Es funktioniert nicht :( – honeyyy

+0

Thats, weil ich nicht weiß, was return txt.getPaintFlags, überprüfen Sie es im Debug-Modus und entdecken, welche Bedingung sagt Ihnen der Text hat keine Paint Flags: P –

+0

Haben Sie irgendwelche Probleme @honeyyy –

Verwandte Themen