Как прикрепить пользовательский вид к интерактивному промежутку внутри TextView - PullRequest
0 голосов
/ 20 января 2019

Общая идея такова: у меня есть ScrollView, внутри него - TextView.Некоторые части TextView являются ClickableSpan с.Когда я нажимаю на одну из ClickableSpan s, я хочу прикрепить к ней пользовательскую подсказку.Подсказка может быть прикреплена только к View.Используя onClick метод ClickableSpan, параметр View внутри него является родительским TextView, поэтому подсказка всегда будет присоединена ко всему TextView, но я хочу, чтобы он был присоединен кClickableSpan.У меня нет общего представления о том, как этого добиться и как его погуглить.

Это создание кликабельных промежутков:

    while (matcher.find()) {
        int start = matcher.start();
        int end = matcher.end();

        final String chordName = matcher.group(1);

        ClickableSpan clickSpan = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                // Here the "view" is of the parent TextView, 
                // but I want it to be a custom View of the unique 
                // ClickableSpan so I can pass it to the custom tooltip
            }
        };
        spannable.setSpan(clickSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    TextView tabsView = findViewById(R.id.tabs);

    tabsView.setText(spannable, TextView.BufferType.SPANNABLE);
    tabsView.setMovementMethod(LinkMovementMethod.getInstance());

Вот как я показываю подсказку:

new Tooltip.Builder(context)
            .anchor(view)
            .autoAdjust(true)
            .content(content)
            .withTip(new Tooltip.Tip(16, 16, R.color.colorPrimary, 4))
            .into((ViewGroup)((Activity)context).findViewById(R.id.chordsViewRoot))
            .show();

В части .anchor(view) я должен передать View, к которому будет прикреплена подсказка, и я хочу, чтобы она была прикреплена к ClickableSpan, на который я нажал.

Что я хочу

Что происходит в настоящее время

Это библиотека, которую я использую для пользовательских подсказок

...