El inflado manual de la vista personalizada genera diferentes diseños para la vista personalizada de ActionBar
Vista personalizada desde el recurso:
// Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setCustomView(R.layout.custom_action_bar); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
el resultado es:
- Estilo de elemento de menú Arc como en la aplicación tumblr para Android
- Custom EditText no muestra el teclado en el enfoque
- View.onTouchEvent sólo registra el evento ACTION_DOWN
- La vista personalizada de Android muestra negro sólido después de invocar invalidate
- Buscar Editar texto como Google Play
Vista personalizada manualmente inflada:
// Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.custom_action_bar, null); actionBar.setCustomView(view); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
el resultado es:
Custom_action_bar.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="3"> <TextView android:id="@+id/bar_title1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textColor="@color/White" android:text="title1"/> <TextView android:id="@+id/bar_title2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textColor="@color/White" android:text="title2"/> <TextView android:id="@+id/bar_title3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textColor="@color/White" android:text="title3"/> </LinearLayout>
El primer diseño mostrado aquí es el correcto, porque tiene pesos en sus widgets. El segundo intento debe producir el mismo resultado, pero no lo hace.
- Método getResourceId de TypedArray
- Cambiar el color de los días especificados en Android CalendarView
- Comportamiento extraño al dibujar un anillo usando Path.arcTo () en Android
- Reduciendo el tamaño de fuente de los componentes de AlertDialog.Builder
- Custom EditText no funciona después de establecer su tipo de entrada a través de setInputType ()
- extendiendo la clase cardview muestran el rectángulo blanco alrededor de la tarjeta
- ¿Cómo puedo agregar los tonos de llamada personalizados de mi aplicación en la carpeta res / raw a un ringtonepreference
- Estado de la barra de progreso android
En realidad, el problema aquí es que en el segundo caso ActionBar necesita parámetros adicionales de diseño:
final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.custom_action_bar, null); actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
Por lo tanto, cubre todo el área de ActionBar. Parece que por defecto los parámetros WRAP_CONTENT
llayout se aplican a la vista personalizada.
Otra opción es dejar que el ActionBar haga el trabajo por ti (en este caso estoy mostrando cómo hacerlo con la versión de soporte).
// Set your custom view getSupportActionBar().setCustomView(R.layout.custom_action_bar); // Get the inflated view View view = getSupportActionBar().getCustomView(); // Do what you want with the view (set the title, custom font etc.) TextView actionBarTitle = (TextView) view.findViewById(R.id.action_bar_title); ... // set the custom flag getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM)
- Cómo capturar eventos de doble toque en Android con OnTouchListener
- Convertir cadena a flotar en android