複数のクリック可能なスパンを含むテキストビューがあります。これらのスパンをクリックしてテストできるようにしたい。エスプレッソを使用してclickablespanをクリックするには?
カスタムViewActionを設定して、TextViewでclickablespansを見つけて、そのテキストを目的のテキストと突き合わせてから、そのテキストのxy座標をクリックしようとしました。しかし、TextViewに追加されたスパンはClickableSpan型ではなく、そのスパンを追加したフラグメントです。
したがって、リンクスパンを区別できません。これを行うより良い方法はありますか?
追加スパン:
@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
スパンをどうやって追加していますか? 'TextUtils#dumpSpans'を呼び出そうとしましたか? – pskink
スパンを追加するコードを追加しました。 instanceofのチェックとキャストを削除しても実際に動作しますが、ClickableSpanだけではなくテキストのスパンが見つかります。私はデバッガのスパンを見て、どれもClickableSpan型ではありませんでしたが、スパンを追加したフラグメントではありませんでした。 –
'getSpans'の最後のパラメータを参照 – pskink