Извлеките часть строки и измените ее на жирный и добавьте ее в TextView - PullRequest
0 голосов
/ 21 декабря 2018

у меня есть строка с текстом с некоторыми предложениями, например:

Lorem ipsum dolor sit amet, adetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore [et dolore magna aliquyam erat]Sed Diam Volptua.«На самом деле, и с вами, и со мной, и с кем-то, и с кем-то.Stet clita kasd gubergren

В этом тексте я добавил две квадратные скобки "[,]", которые должны найти часть, которую я хочу показать жирным шрифтом.

Теперь он хочет извлечь часть между этими скобками с помощью этого регулярного выражения:

(?<=\[).+?(?=\])

Сделайте это жирным шрифтом с помощью:

SpannableStringBuilder str = new SpannableStringBuilder("regex here");
str.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

и добавьте его в одну строку ипоказать это в TextView.

У меня есть функции, чтобы сделать это, но я не знаю, как это объединить.

Надеюсь, вы, ребята, можете мне помочь

1 Ответ

0 голосов
/ 22 декабря 2018

Здесь я сделал небольшой пример для вас.Это именно то, что вы хотите.

public class TestActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        button = findViewById(R.id.button_action);
        textView = findViewById(R.id.title);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore [et dolore magna aliquyam erat], sed diam voluptua. ?At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren";
                Pattern pattern = Pattern.compile("\\[[\\w ]+\\]");
                Matcher matcher = pattern.matcher(text);
                while (matcher.find())
                    text = text.replace(matcher.group(), matcher.group().replace("[", "<b>").replace("]", "</b>"));
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
                } else {
                    textView.setText(Html.fromHtml(text));
                }
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...