Android Full Width Estilo ICS Minimalista Bottom ButtonsViews

Quiero hacer algunos botones que se ven como este el siguiente: ICS Botones

He buscado bastante duro para los ICS preestablecidos en el paquete android.widget, pero no puedo encontrar ninguno. Creo que hay que ser una forma fácil, ya que parecen ser tema de toda la versión del sistema operativo. Si alguien sabe de una manera de hacer que los botones se vean como estos yo sería un campista feliz.

En caso de que esté buscando el diseño XML del botón de Android ICS como el de la siguiente captura de pantalla, he aquí el diseño XML que encontré en el código fuente de Android OS.

Captura de pantalla de la aplicación desinstalar en Android 4.0

<!-- Copyright (C) 2008 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- OK confirm and cancel buttons. --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:divider="?android:attr/dividerHorizontal" android:showDividers="beginning" android:paddingTop="16dip"> <LinearLayout style="?android:attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:measureWithLargestChild="true"> <LinearLayout android:id="@+id/leftSpacer" android:layout_weight="0.25" android:layout_width="0dip" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="gone" /> <Button android:id="@+id/cancel_button" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="left" android:layout_weight="1" android:text="@string/cancel" android:maxLines="2" style="?android:attr/buttonBarButtonStyle" /> <Button android:id="@+id/ok_button" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_weight="1" android:text="@string/install" android:maxLines="2" android:filterTouchesWhenObscured="true" style="?android:attr/buttonBarButtonStyle" /> <LinearLayout android:id="@+id/rightSpacer" android:layout_width="0dip" android:layout_weight="0.25" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="gone" /> </LinearLayout> </LinearLayout> 

Si desea hacerlo en todos los dispositivos (y versiones de android), básicamente desea un botón sin fondo o un fondo sólido con bordes en la parte superior e inferior.

La única manera de agregar bordes correctamente en Android es usar la herramienta que viene con el SDK de Android o ADT llamado draw9patch. Es una pequeña herramienta simple que hará el trabajo. Si necesita ayuda para usarla, lo mejor es buscar un video de YouTube, ya que puede ser difícil de usar la primera vez.

Dibujar 9 parches

He estado jugando un poco con respecto a esta pregunta. ¿Una solución basada en linearLayouts con vistas 1dp como divisores y fondo transparente para obtener el aspecto minimalista en los botones.

Introduzca aquí la descripción de la imagen

Queremos que los botones cambien la apariencia dependiendo del estado del botón. (Más sobre esto aquí hola tutorial de material de forma ). Cambiamos el color de fondo para que el usuario obtenga una indicación al pulsar el botón.

Borderless_background.xml (va en la carpeta dibujable)

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <solid android:color="#33b5e5" /> </shape> </item> <item android:state_focused="true"> <shape> <solid android:color="#0099cc" /> </shape> </item> <item> <shape> <solid android:color="@android:color/transparent" /> </shape> </item> </selector> 

El archivo main.xml utilizará el archivo borderless_background, consulte la etiqueta android: background para los botones del código siguiente

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="8dp" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="0dp" android:gravity="center" android:layout_weight="1.0" android:textSize="14sp" android:text="@string/borderless" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:textSize="12sp" android:autoLink="web" android:text="@string/source1" /> <View android:id="@+id/horizontal_divider1" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_weight="1.0" android:background="@drawable/borderless_background" android:textColor="@android:color/white" android:textSize="16sp" android:text="Cancel" android:onClick="cancel" /> <View android:id="@+id/vertical_divider" android:layout_width="1dip" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:layout_height="fill_parent" android:background="@android:color/darker_gray" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_weight="1.0" android:background="@drawable/borderless_background" android:textColor="@android:color/white" android:textSize="16sp" android:text="Next" android:onClick="next" /> </LinearLayout> <View android:id="@+id/horizontal_divider2" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray" /> </LinearLayout> 

Hay advertencias con respecto al funcionamiento debido a los layuots lineales anidados pero la cosa funcionó muy bien en la tableta que probé en tan yo perezoso para fijar esto. Una corrección probablemente se basaría en el diseño relativo o el diseño de la cuadrícula.

He encontrado una solución muy simple que:

  • Añade iconos transparentes
  • Tiene un borde superior horizontal
  • Tiene un divisor vertical entre cada botón
  • No tiene borde inferior

Fuente: https://gist.github.com/2373644

Contenido:

 <!-- A button bar is a set of buttons at the bottom of an activity. An example is an AlertDialog with OK/Cancel buttons. Note that something similar can be accomplished using a split action bar and text-only action buttons, but this is an alternate presentation that's often preferred. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="?android:attr/dividerHorizontal" android:showDividers="middle"> <TextView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:text="Hello World" /> <LinearLayout style="?android:attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="One" /> <Button style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Two" /> </LinearLayout> </LinearLayout> 
  • Cambiar el color de la palabra en la cadena de recursos
  • API de bloqueo de Android?
  • sombra lista de android
  • Android: Botón en AlertDialog
  • ¿Es posible usar un ListView sin ListActivity en Mono Android?
  • Crear, almacenar e inflar diseño personalizado en tiempo de ejecución
  • android: Establecer programaticamente alinear en RemoteView
  • Entender los BaseAdapters y cómo usarlos
  • ¿Por qué NullPointerException cuando agrego programaticamente mi vista de texto?
  • La función onGrado de RadioGroup no se disparará
  • ¿Cómo importar el código fuente del proyecto de Android App en Eclipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.