2011-11-28 16 views
7

Mi rendo conto che è una cosa strana da fare, ma ho un pulsante che ha bisogno di look come un EditText ma si comporta ancora come un bottone. Il mio layout XML attualmente si presenta così:Stile un pulsante per apparire come un EditText (ma si comporta ancora come un pulsante)

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="?android:attr/editTextStyle" /> 

che gli dà l'apparenza di un EditText, ma anche pasticci con il comportamento un po ', impedendo l'evento onClick di essere licenziato a meno che il pulsante è stato attivato (in modo efficace rendendolo richiedono due clic). C'è un modo per mantenere lo stile senza modificare il comportamento del pulsante?

Ho pensato di creare uno sfondo a nove patch che assomigli ad un EditText, ma con così tante diverse versioni e skin Android là fuori preferisco usare lo stile di sistema se è possibile.

risposta

28

Che ne dici di un EditText che si comporta come un pulsante?

<EditText android:id="@+id/Edit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="true"/> 

È anche possibile definire un OnClickListener. E non si focalizzerà.

+1

Mi piacerebbe questo se fossi in me. – dmon

+1

Grazie, ha avuto lo stesso bisogno ... è quello che io chiamo "fuori dagli schemi". – Shahar

1

Se è assolutamente necessario un pulsante, è possibile aggiungere un ascoltatore di messa a fuoco al pulsante che attiva l'onclick quando il pulsante riceve lo stato attivo.

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View view, boolean hasFocus) { 
    if(hasFocus) { 
     weirdoButton.performClick(); 
    } 
    } 
}); 

Il rovescio della medaglia è che il click si attiva quando il pulsante viene attivato tramite un trackball o d-pad. Rendono un-focus-grado nel file di layout:

<Button 
    android:id="@+id/weirdoButton" 
    android:layout_width="match_parent" 
    android:layout_height="50dip" 
    android:focusable="false" 
    style="?android:attr/editTextStyle" /> 
0

La risposta accettata non consentono di stile EditText come un pulsante, ma ho trovato una discrepanza in esso; quando lo premi a lungo, ti permette di incollare del testo che è terribile in termini di UX.

Questo è quello che ho applicato invece per lo stile come EditText.

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:textSize="16sp" 
    android:focusable="false" 
    android:id="@+id/btnAddMember" 
    style="?android:attr/editTextStyle" 
    android:focusableInTouchMode="false" 
    android:clickable="true" 
    android:hint="Button Content"/> 
Problemi correlati