Ho una vista testuale con più estensioni cliccabili in esso. Voglio essere in grado di testare cliccando su questi span.Come fare clic su un dispositivo di scatto con l'espresso?
Ho provato a impostare una ViewAction personalizzata che avrebbe trovato i Clickable Pad nel TextView e quindi avrebbe abbinato il loro testo al testo desiderato e quindi fare clic sulle coordinate xy di quel testo. Tuttavia, sembra che gli span aggiunti a TextView non siano di tipo ClickableSpan e siano invece il frammento che ha aggiunto l'estensione.
Pertanto, non sono in grado di distinguere i campi di collegamento. C'è un modo migliore per farlo?
Aggiunta campate: metodo
Util.addClickableSpan(spannableString, string, linkedString, new ClickableSpan() {
@Override
public void onClick(View textView) {}
});
tvAcceptTc.setText(spannableString);
tvAcceptTc.setMovementMethod(LinkMovementMethod.getInstance());
Utility:
public static void addClickableSpan(SpannableString spannableString,
String text,
String subText,
ClickableSpan clickableSpan) {
int start = text.indexOf(subText);
int end = text.indexOf(subText) + subText.length();
int flags = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
spannableString.setSpan(clickableSpan, start, end, flags);
}
Definizione del ViewAction:
@Override
public void perform(UiController uiController, View view) {
uiController.loopMainThreadUntilIdle();
if (view instanceof TextView) {
TextView textView = (TextView) view;
Layout textViewLayout = textView.getLayout();
SpannableString fullSpannable = new SpannableString(textView.getText());
Object[] spans = fullSpannable.getSpans(0, fullSpannable.length(), Object.class);
ClickableSpan span = null;
for (Object object : spans) {
if (object instanceof BaseFragment) {
ClickableSpan foundSpan = (ClickableSpan)object;
int spanStart = fullSpannable.getSpanStart(foundSpan);
int spanEnd = fullSpannable.getSpanEnd(foundSpan);
if (fullSpannable.subSequence(spanStart, spanEnd).equals(aSubstring)) {
//Found the correct span!
span = foundSpan;
}
}
} ... go on to click the xy-coordinates
come stai aggiungendo le tue span? hai provato a chiamare 'TextUtils # dumpSpans'? – pskink
Ho aggiunto il codice per aggiungere gli span. Funziona davvero ora se rimuovo l'istanza di controllo e casting, ma troverà span con il testo invece di un solo ClickableSpan. Ho guardato gli span nel debugger e nessuno di loro era di tipo ClickableSpan, ma erano invece dal frammento che ha aggiunto gli span. –
vedi l'ultimo parametro di 'getSpans' – pskink