Im試圖使用SpannableString
將OnDragListener
設置爲TextView
的某些單詞。即時通訊能夠通過使用ClickableSpan
在SpannableString上設置Drag Listener
做
hashText.setSpan(new ClickableSpan() {
添加一個OnClick
偵聽器,我想我會嘗試相同,但與OnDragListener
取代ClickableSpan
。
我可以讀取不同的拖拽事件,但我無法將拖拽事件隔離到我選擇的特定單詞,因爲我能夠使用ClickableSpan
。
hashText.setSpan(new View.OnDragListener() {
@Override
public boolean onDrag(View targetView, DragEvent event) {
int action = event.getAction();
TextView targetVariable = (TextView) targetView;
String textGetter;
textGetter = targetVariable.getText().toString();
// boolean actionDropOutside = (DragEvent.ACTION_DRAG_ENDED != DragEvent.ACTION_DROP);
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.d(TAG, "DRAG STARTED");
break;
case DragEvent.ACTION_DRAG_ENTERED:
////create method that checks if text is empty if so lights up
//if (textGetter.equals("")) {
targetView.setBackgroundColor(CARD_SLECTED);
//lightupVariableCard(cardV);
Log.d(TAG, "DRAG ENTERED EMPTY TEXT");
//}
Log.d(TAG, "DRAG ENTERED" + targetVariable.getText().toString());
break;
case DragEvent.ACTION_DRAG_EXITED:
targetView.setBackgroundColor(CARD_UNSLECTED);
Log.d(TAG, "DRAG EXITED");
break;
case DragEvent.ACTION_DROP:
// Dropped, reassign View to ViewGroup
//if (textGetter.equals("")) {
TextView draggedView = (TextView) event.getLocalState();
ViewGroup owner = (ViewGroup) draggedView.getParent();
targetVariable.setText(draggedView.getText());
owner.setVisibility(View.INVISIBLE);
targetView.setBackgroundColor(CARD_UNSLECTED);
//fabDisplayCounter++;
//displayFab();
Log.d(TAG, "DRAG DROPPED");
//}
Log.d(TAG, "DRAG NOT POSSSIBLE HERE");
break;
case DragEvent.ACTION_DRAG_ENDED:
// if (actionDropOutside == true){
// Log.d(TAG, "DRAG DROPPED OUTSIDE TRUE");
// }
Log.d(TAG, "DRAG ENDED");
//default:
}
return true;
}
}, matcher.start(), matcher.end(), i);
the_question.setText(hashText);
the_question.setMovementMethod(LinkMovementMethod.getInstance());
//the_question.setOnDragListener(new MyDragListener(hashText.nextSpanTransition()));
嘿感謝您的反饋。我不打算作爲答案,因爲我不希望被mods大吼,但我繼續投票,確保你獲得積分。我已經對你提出了一些建議,但在此期間我已經走了另一個方向。只要有時間,我會重新考慮你的建議,並根據你的答案添加解決方案。再次感謝 – user1446988
@ user1446988沒有問題的隊友,考慮用你找到的解決方案回答你自己的問題,它可以幫助別人甚至你未來的自我。如果你嘗試我的建議,讓我知道。 –