2014-02-24 2 views

Antwort

0

Sie können den Schlüssel Zuhörer überschreiben, so dass Sie nichts außer Bearbeitung

final EditText edittext = (EditText) findViewById(R.id.edittext); 
edittext.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     return true; 
    } 
}); 
1

ein TextView erstellen tun können, als durch die andere Antwort, statt eines EditText angegeben. Dann das Kontextmenü der Aktivität außer Kraft setzen in Ihrer Activity Klasse wie folgt:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 

    menu.add(0, v.getId(), 0, "Copy"); 

    //cast the received View to TextView so that you can get its text 
    TextView yourTextView = (TextView) v; 

    //place your TextView's text in the clipboard 
    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
    clipboard.setText(yourTextView.getText()); 
} 

dann einfach registerForContextMenu(yourTextView); in onCreate() nennen.

0

Verwenden android: editierbare = "false" Eigenschaft für das EditText in Ihrem Layout View-Datei.

+0

Diese Option kopiert werden kann, wird die Kopierfähigkeit auch –

9

Der Befehl text.setTextIsSelectable(true) erfordert API 11. Für diejenigen mit niedrigeren API den folgenden XML verwenden:

android:inputType="none" 
android:textIsSelectable="true" 

dies Ihre editText wählbar, aber nicht editierbar machen.

+0

'android deaktivieren: input =„none“' noch erlaubt die Bearbeitung. – BlueMonkMN

0

Me, diese Klasse

import android.content.Context; 
import android.text.InputFilter; 
import android.text.Spanned; 
import android.util.AttributeSet; 
import android.widget.EditText; 

/* 
* 
* To make EditText read and copy only but not editable 
* using 
* sendReadOnlyCallback(callback); 
* 
*/ 
public class MyEditText extends EditText { 

    private InputFilter[] originalFilters = null; 
    private boolean internalChange = false; 
    private InputFilter[] myInputFilters = null; 
    private static ReadonlyCallback sDummyCallback = new ReadonlyCallback() { 
     @Override 
     public boolean isReadOnly() { 
      return false; 
     } 
    }; 
    private ReadonlyCallback callback = sDummyCallback; 

    public MyEditText(Context context) { 
     super(context); 
    } 

    public MyEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyEditText(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public interface ReadonlyCallback { 
     public boolean isReadOnly(); 
    } 

    public void setReadonlyCallback(ReadonlyCallback cb) { 
     if (cb == null) 
      callback = sDummyCallback; 
     else 
      callback = cb; 
    } 

    public void setFilters(InputFilter[] filters) { 

     // duplicated from TexView 
     originalFilters = new InputFilter[filters.length]; 
     System.arraycopy(filters, 0, originalFilters, 0, filters.length); 

     // funny No. 1 : have to re instantiate `callback` 
     // otherwise got `NullPointerExcection` when called from `filter` 
     callback = sDummyCallback; 

     myInputFilters = new InputFilter[] { new InputFilter() { 

      // funny No. 2: 
      // have to make refs to `originalfilters` 
      // otherwise got `NullPointerExcection` when called from `filter` 
      InputFilter[] flts = originalFilters; 

      @Override 
      public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
       if (!internalChange && callback.isReadOnly()) 
        return dest.subSequence(dstart, dend); 
       int filtercount = flts.length; 
       if (filtercount == 0) 
        return null; 

       // duplicated from InputFilter.AllCaps 
       for (int i = 0; i < filtercount; i++) { 
        CharSequence repl = flts[i].filter(source, start, end, dest, start, end); 
        if (repl != null) { 
         source = repl; 
         start = 0; 
         end = repl.length(); 
        } 
        if (i == filtercount) 
         return repl; 
       } 
       return null; 
      } 
     } }; 
     super.setFilters(myInputFilters); 
    } 

    @Override 
    public InputFilter[] getFilters() { 
     if (myInputFilters == null) 
      return super.getFilters(); 
     return originalFilters; 
    } 

    @Override 
    public synchronized void setText(CharSequence text, BufferType type) { 
     internalChange = true; 
     super.setText(text, type); 
     internalChange = false; 
    } 
} 
2

Die einfachste Möglichkeit, dies zu tun ist, diesen Code hinzuzufügen:

textInput.setInputType(InputType.TYPE_NULL); 
textInput.setTextIsSelectable(true); 
textInput.setKeyListener(null); 
Verwandte Themen