2012-05-11 13 views

Odpowiedz

3

Rozwiązałem ten problem.
Wystarczy ustawić TextView tak:

text.setTextIsSelectable(true); 
+0

połączenie wymaga API 11 –

4

Myślę, że można przesłonić metodę onKeyDown(), sprawić, by robiła tylko zwracać true. Powinien wychwytywać klawisze z klawiatury i negować je, zanim będą mogły wejść do tekstu w EditText.

może też try setting editable false jak ten

android:editable="false" 

na EditText w układzie xml. Nie jestem jednak pewien, czy to pozwoli ci nadal podkreślać i kopiować, ale warto spróbować.

+1

Dzięki, Tim! Ale Android: edytowalny jest przestarzały w Android Ice Cream Sandwich. – Limp

+0

czy zostawili notatkę, która mówi, czego użyć zamiast tego? – FoamyGuy

+1

Tak, powiedzieli mi, że zamiast tego korzystam z TextView. Ale nie można wybrać TextView. – Limp

14

text.setTextIsSelectable(true) wymaga API 11. Dla tych, stosując niższe API: W użyciu xml:

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

To sprawi, że EditText nieedytowalny ale wybierane.

+0

Mogę potwierdzić, że w API 10 (testowane w 2.3.4 i 2.3.6) powyższe dwie linie nie działają. EditText jest nadal edytowalny, a klawiatura wyskakuje .. – Bruce

+0

Więc jakie jest rozwiązanie? –

+1

Sprawdź moją pełną odpowiedź na stronie http://stackoverflow.com/a/20173020/1241783. Niezbyt dumny z tej hacky, ale jest to jedyny sposób, jaki znam na razie. Daj mi znać, jeśli ktoś zna lepszy sposób na wersję API <10. Dzięki! – Bruce

0

Althouth android:editable jest przestarzałe i Lint sugeruje, aby użyć inputType, To nie wydaje się działać. Tak więc android:editable="false" jest najwyraźniej najlepszym rozwiązaniem dla wszystkich wersji Androida.

<EditText 
    android:id="@+id/editText" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:editable="false" 
    android:textIsSelectable="true" 
    tools:ignore="Deprecated" /> 
Powiązane problemy