2011-11-28 19 views
7

Me doy cuenta de que esto es algo raro de hacer, pero tengo un botón que necesita mira como EditText pero todavía se comporta como un botón. Mi XML diseño actualmente es el siguiente:Diseña un botón para que parezca un EditText (pero aún así te comportes como un botón)

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

que le da la apariencia de un EditarTexto, sino que también se mete con el comportamiento un poco al impedir que el evento de clic de ser despedido a menos que el botón está seleccionado (de hecho, por lo que es requieren dos clics). ¿Hay alguna manera de mantener el estilo sin cambiar el comportamiento del botón?

pensé en simplemente hacer un fondo de nueve parche que se parece a un EditarTexto, pero con tantas diferentes versiones de Android y las pieles por ahí prefiero usar el estilo del sistema si es posible.

Respuesta

28

¿Qué tal un EditText que se comporta como un botón?

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

También puede definir un OnClickListener para él. Y no se enfocará.

+1

Me gustaría ir por esto si fuera yo. – dmon

+1

Gracias, tenía la misma necesidad ... eso es lo que llamo "fuera de la caja". – Shahar

1

Si es absolutamente necesario que sea un botón, puede agregar un oyente de enfoque a su botón que activa el clic cuando el botón recibe el foco.

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() { 

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

La desventaja es que el clic se disparará cuando el botón recibe el foco a través de una rueda de desplazamiento o d-pad. Que sea un-enfoque-poder en el archivo de diseño:

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

La respuesta aceptada no le permiten estilo EditarTexto como un botón, pero he encontrado una discrepancia en ella; cuando lo presionas, te permite pegar texto, lo que es terrible en términos de UX.

Esto es lo que solicité en cambio para darle un estilo como EditarTexto.

<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"/> 
Cuestiones relacionadas