跨度不能超过1个字

时间:2019-06-19 20:03:48

标签: java android spannablestring

这是我第一次使用Java和Android Studio,因此,如果这是一个愚蠢的问题,我感到抱歉,我真的很想尝试解决这个问题。 我想让用户输入每个单词都可以点击(我试图给出一个图像,描述用户点击后每个单词的输入)。

我相信setSpan一次只处理一个单词(虽然我不确定),但是当该短语包含多个单词时,应用程序崩溃(例如“ java.lang.IndexOutOfBoundsException:setSpan(6。 .. 7)结束于长度1“)

public void processResult(String result_message) {
    result_message = result_message.toLowerCase();

    final TextView changingText = (TextView) findViewById(R.id.TextToChange);
    changingText.setText(result_message);

    final String s = result_message;
    String[] arr = s.split(" ");

    for (int i = 0; i < arr.length; i++) {
        final String ss = arr[i];
        Log.d("S", ss);
        int startingPosition = s.indexOf(ss);
        int endingPosition = startingPosition + ss.length();
        Spannable str = new SpannableString(ss);

        Log.d("points", "start position=" + startingPosition + " end position=" + endingPosition);

        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, ss, Toast.LENGTH_SHORT).show();

            }

        };

       str.setSpan(clickableSpan, startingPosition, endingPosition, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

       changingText.setText(ss);
       changingText.setMovementMethod(LinkMovementMethod.getInstance());
    }


}

目标是使result_message的所有单词都可单击,但是我相信只有一个是(而且我对此还不确定)

0 个答案:

没有答案