更改 textView 中选定文本的删除线
Change strike-through in selected text in a textView
当我 select 它时,我试图在 textView 中敲击一个字符串,然后当我 select 它第二次时,它不会被敲击,这对我有用,但问题是当我 select 这个 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);
}
});
}
});
}
}
您的问题是您在第一次点击后覆盖了 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);
}
}
});
当我 select 它时,我试图在 textView 中敲击一个字符串,然后当我 select 它第二次时,它不会被敲击,这对我有用,但问题是当我 select 这个 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);
}
});
}
});
}
}
您的问题是您在第一次点击后覆盖了 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);
}
}
});