2016-01-01 12 views
15

Nella schermata di un'applicazione sono presenti numerose visualizzazioni di EditText. La mia app è costruita utilizzando il Material Design (AppCompactActivity, ecc.).Android - edittext - non vengono visualizzati gli handle di textelection e nessuna opzione di condivisione

Mentre si visualizza un campo EditText, con una pressione prolungata cerco di selezionare un numero di parole nel testo. Questo mi consente di copiare o condividere quel testo. Selezionare più di 1 parola non sembra possibile.

dalla migrazione al Material Design vedo 2 cose:

1 - Dopo una lunga pressione non sono presenti quadratini di selezione indicata. Quindi, sul posto dei punti interrogativi mi aspettavo dei waterdrops inversi. Queste sono le maniglie che normalmente usi per cambiare la selezione specifica.

Domanda: perché questi eyedrops sono spariti? Li vedo quando seleziono il testo, ad es. una visione web

Sì, uso 'android: textIsSelectable = "true"'. Sotto puoi vedere il layout EditText.

enter image description here

2 - L'opzione "condivisione" per il testo selezionato non è disponibile. Perché?

enter image description here

Qual è il campo EditText?

<EditText 
    android:id="@+id/geocache_info_hint" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="15sp" 
    android:singleLine="false" 
    android:lines="4" 
    android:scrollHorizontally="false" 
    android:scrollbars="vertical" 
    android:layout_marginLeft="5dp" 
    android:ellipsize="none" 
    android:textIsSelectable="true" 
    android:text=""/> 

In seguito alla nomina di un testo (in questo caso 1 parola) quello che anch'io ho visto è che una barra 'tekstselectie' extra (= textselection) viene messa in cima allo schermo. Questa è anche una differenza in quanto Android 4.

enter image description here

** Soluzione **

Nel mio tema ho avuto una linea che ha causato il problema di non mostrare alcuna selezione del testo maniglie:

<item name="android:popupBackground">@color/window_background</item> 

Il colore @/window_background è stato scelto come bianco.

+0

Stai costruendo con appcompat-v7 versione 23.1.1? –

+0

Ho studiato il problema e non ho trovato nulla. Impossibile riprodurre su nessuno dei miei dispositivi. Non so se l'utilizzo dell'ultima versione di appcompat possa essere d'aiuto. –

+0

Ho aggiornato tutto a 23.1.0. Ahimè, nessun cambiamento. Perché questo funziona per la webview e non per edittext? – tjm1706

risposta

6

UPD2:

Inoltre, come tjm1706 capito, è importante esaminare attentamente la proprietà Theme.In questo caso, la chiave è stato quello di rimuovere <item name="android:popupBackground">@color/window_background</item>

UPD1:

  1. per evitare questo "doppio-barra degli strumenti" sulla modifica, aggiungere questo allo stile del vostro Tema:

    <item name="windowActionModeOverlay">true</item> 
    <item name="actionModeBackground">@drawable/myapp_action_mode_background</item> 
    

    preso da here

  2. Per aggiungere Condividi (o qualsiasi altro pulsante) - è necessario impostare sul tuo EditTextsetCustomSelectionActionModeCallback:

    Controllare questa domanda: Custom cut/copy action bar for EditText that shows text selection handles - contiene un esempio dettagliato.

originale:

Provare a rimuovere : android:textIsSelectable="true". Non è possibile digitare con esso. E se non hai bisogno di modificare EditText - probabilmente, il semplice TextView ti si addice meglio.

Senza di essa, i tuoi EditText funziona bene per me:

enter image description here

+0

Purtroppo, non aiuta. Una differenza con la tua demo è che una barra di copia e incolla aggiuntiva viene posizionata in cima allo schermo. – tjm1706

+0

@ tjm1706 inserisce barre di copia e incolla aggiuntive anche su Android M? (questa cosa a bolle galleggianti con condivisione/copia nella gif è standard in M) –

+0

Ho aggiornato la 'domanda' con quello che vedo ora. Informazioni sufficienti? – tjm1706

0

Aggiungi Android: textIsSelectable in XML.

Problemi correlati