Общая идея такова: у меня есть 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
, на который я нажал.
Что я хочу
Что происходит в настоящее время
Это библиотека, которую я использую для пользовательских подсказок