TextView에서 선택 + 텍스트 복사?
사용자가 TextView에서 텍스트를 선택 / 복사 할 수있는 방법이 있습니까? 컨트롤을 필요로하는 기능이 모두 선택 / 복사 팝업 옵션을 사용할 수있는 EditText와 같은 기능이 필요하지만 TextView처럼 보이려면 컨트롤이 필요합니다.
EditText에서 editable = "none"옵션 또는 inputType = "none"을 사용하는 것과 동일한 몇 가지 작업을 시도했지만 여전히 수행되지 않는 EditText의 프레임 배경이 유지됩니다.
감사합니다
------- 업데이트 ----------------------
이것은 99 %입니다. 제가 원하는 것은 선택 하이라이트가 보이게하는 것입니다 (주황색 물건). 그 외에는 좋지만 이것으로 살 수 있습니다.
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
style="?android:attr/textViewStyle"
android:textColor="@color/white"
android:textAppearance="@android:style/TextAppearance.Medium"
android:cursorVisible="false"
android:background="@null" />
나는 커서 Visible = "false"때문에 발생하는 발생하는 생각하지만, 선택하지 않을 커서가 존재합니다.
android : textIsSelectable 작동 (적어도 ICS에서는-이전 버전에서는 아직 유효하지 않습니다)
<TextView
android:id="@+id/deviceIdTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:text="" />
텍스트보기는 활성화, 포커스 가능, longClickable 및 textIsSelectable이 필요합니다.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/pwTextView"
android:enabled="true"
android:textIsSelectable="true"
android:focusable="true"
android:longClickable="true" />
더 나은 솔루션이 생각합니다. 그냥 전화 해
registerForContextMenu(yourTextView);
당신은 온라인 TextView
메뉴 이벤트를 받기 위해 등록됩니다.
다음 그런 onCreateContextMenu
귀하의Activity
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
//user has long pressed your TextView
menu.add(0, v.getId(), 0, "text that you want to show in the context menu - I use simply Copy");
//cast the received View to TextView so that you can get its text
TextView yourTextView = (TextView) v;
//place your TextView's text in clipboard
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.setText(yourTextView.getText());
}
이것이 당신과 다른 사람들이 텍스트를 복사하는 방법을 찾는 데 도움이되기를 바랍니다. TextView
textview1.setTextIsSelectable(true);
이렇게하면 사용자가 클릭하거나 클릭하거나 텍스트를 선택합니다.
나는 똑같은 것을 구현하려고 노력하고 귀하의 질문은 내 편집 확장 레이아웃을 설정하는 데 도움이됩니다. 감사합니다! :)
그런 다음 커서가 켜져 있으면 강조 표시가 실제로 표시된다는 것을 깨달았습니다. 하지만 텍스트를 길게 클릭하기 전에 커서를보고 싶지 않기 때문에 여러분과 마찬가지로 layout.xml 파일에서 커서를 숨기고 길게 클릭 할 때 이벤트 리스너를 추가하고 선택이 시작될 때만 커서를 표시합니다. .
따라서 onCreate 섹션의 Activity에 리스너를 추가하십시오.
public TextView htmltextview;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
htmltextview.setOnLongClickListener(new OnLongClickListener(){
public boolean onLongClick(View v) {
htmltextview.setCursorVisible(true);
return false;
}
});
}
그리고 시작 부분에 커서가 없으며 길게 클릭하면 커서가 선택 경계와 함께 나타납니다.
내가 도울 수 있기를 바랍니다.
건배, fm
나는 또한 비슷한 것을 시도했지만 여전히 TextView에서 텍스트 강조 표시를 조작하는 사용자 지정 접근 방식이 필요했습니다. 나는 LongClick
행동 에 하이라이트와 카피를 촉발시켰다 .
이것이 내가 사용하는 방법입니다 SpannableString
.
SpannableString highlightString = new SpannableString(textView.getText());
highlightString.setSpan(new BackgroundColorSpan(ContextCompat.getColor(getActivity(), R.color.gray))
, 0, textView.getText().length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(highlightString);
copyToClipboard(urlToShare);
및 복사 기능 :
public void copyToClipboard(String copyText) {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("url", copyText);
clipboard.setPrimaryClip(clip);
Toast toast = Toast.makeText(getActivity(), "Link is copied", Toast.LENGTH_SHORT);
toast.show();
}
이 질문으로 끝나는 사람에게 도움이 되었기를 바랍니다. :)
이 간단한 라이브러리를 사용하십시오. GitHub : 선택 가능한 TextView
참고 URL : https://stackoverflow.com/questions/6025818/select-copy-text-in-a-textview
'IT' 카테고리의 다른 글
java.lang.IllegalStateException : 응답이 커밋 된 후 (forward | sendRedirect | create session) 수 없습니다. (0) | 2020.09.04 |
---|---|
process.waitFor ()는 절대 반환하지 않습니다. (0) | 2020.09.04 |
Mac OS X Lion에서 localhost / virtualhost의 느린 확인 /로드 (2 ~ 3 초 지연)를 제거해야합니까? (0) | 2020.09.04 |
레이아웃 제약은 언제 활성화 / 비활성화 할 수 있습니까? (0) | 2020.09.04 |
Android SQLite 데이터베이스 : 느린 삽입 (0) | 2020.09.04 |