IT

TextView에서 선택 + 텍스트 복사?

lottoking 2020. 9. 4. 07:44
반응형

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

반응형