【问题标题】:Change strike-through in selected text in a textView在 textView 中更改选定文本中的删除线
【发布时间】:2016-11-18 15:52:47
【问题描述】:

当我选择它时,我试图在 textView 中敲击一个字符串,然后当我第二次选择它时它将被取消,这对我有用,但问题是当我第三次选择这个 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);


                }
            });
        }
    });
}

}

【问题讨论】:

  • 我建议在strike()中设置一个断点,看看它是否按照你期望的方式执行代码。

标签: android strikethrough


【解决方案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); 
        }
    }
});

【讨论】:

  • 那是因为我不知道什么返回 txt.getPaintFlags,在调试模式下检查它并发现什么条件告诉你文本没有绘制标志:P
  • 你有什么问题吗@honeyyy
  • 我得走了,我不确定,但最好检查文本是否有罢工的油漆标志,而不是检查它的空性。我几乎可以肯定问题取决于 if 条件,稍后我自己检查一下。
  • 很抱歉之前没有检查这个,代码已经编辑好了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多