studio icono deslizante boton bar atras agregar android button android-actionbar stretched

icono - boton deslizante android studio



Barra de acción de Android con dos botones extendidos (5)

¿Alguien sabe cómo implementar fácilmente una barra de acción con dos botones estirados?

Aquí hay un ejemplo de la aplicación de calendario de Google:

¡Gracias!


Conozco 2 maneras de hacer esto, pero uno no se mantiene en la cima.

Aquí está el 1r:

Debe sobrescribir el método en CrearOpcionesMenú , pero esto es agregar la barra de acciones, necesita la API 11 para hacer esto y cuando gira la pantalla, estos botones aparecen en la Barra de acciones, esto depende del tamaño de la pantalla.

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuItem add = menu.add(Menu.NONE, ADD_TIME, 0, R.string.add_time); add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); MenuItem qkAdd = menu.add(Menu.NONE, QUICK_ADD_TIME, 1, R.string.quick_add_time); qkAdd.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); }

Y este es el resultado:

si está utilizando un Fragmento , debe establecer setHasOptionsMenu en verdadero ; de lo contrario, el menú no se mostrará.

Aquí está el 2do:

cancel_done.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:background="@color/color_bar" android:orientation="horizontal" > <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:dividerPadding="12dp" android:orientation="vertical" android:showDividers="end" > <Button android:id="@+id/button1" style="@drawable/btn_cab_done_holo_light" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@drawable/btn_cab_done_holo_light" android:text="CANCEL" android:textSize="14sp" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:dividerPadding="12dp" android:orientation="vertical" android:showDividers="beginning" > <Button android:id="@+id/button2" style="@drawable/btn_cab_done_holo_light" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@drawable/btn_cab_done_holo_light" android:text="DONE" android:textSize="14sp" /> </LinearLayout> </LinearLayout>

el estilo de recurso btn_cab_done_holo_light.xml que puedes encontrar en .. / sdk / platforms / android - %% / data / res / dibujable y luego en tu diseño simplemente agregas:

<include android:layout_width="match_parent" android:layout_height="48dp" android:layout_gravity="fill" layout="@layout/cancel_done" />

Y este es el resultado:

No sé si es la mejor manera, pero está funcionando.


Haz un LinearLayout horizontal con dos botones. Luego, configure cada uno de sus anchos para match_parent y android:layout_weight="0.5" (cada botón ocupará el 50% del espacio).

EDITAR:

Para aplicar como fondo de ActionBar :

(ActionBarSherlock) getSupportActionBar().setCustomView(R.layout.my_view); (ActionBar) getActionBar().setCustomView(R.layout.my_view);




Si prefiere tener esto en ActionBar por cualquier razón, una forma de lograrlo es mediante el uso de una vista personalizada en la barra de acciones. Dentro del diseño de la vista personalizada, preocúpese por configurar el ancho de los botones.

Indicando a la actividad que use una vista personalizada para la barra de acciones:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ActionBar ab = getActionBar(); ab.setDisplayShowHomeEnabled(false); ab.setDisplayShowTitleEnabled(false); final LayoutInflater inflater = (LayoutInflater)getSystemService("layout_inflater"); View view = inflater.inflate(R.layout.action_bar_edit_mode,null); ab.setCustomView(view); ab.setDisplayShowCustomEnabled(true); }

layout / action_bar_edit_mode.xml puede verse más o menos así:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="fill_horizontal" android:orientation="horizontal" > <LinearLayout android:layout_alignParentLeft="true" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:id="@+id/action_bar_button_cancel" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Cancel" /> <Button android:id="@+id/action_bar_button_ok" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_weight="1" android:text="Ok" /> </LinearLayout> </RelativeLayout>

Espero que ayude a alguien!

Nota: Me doy cuenta de los diseños de anidación feos aquí y normalmente no recomendaría esto, pero por alguna razón el diseño de la barra de acciones se niega a dejar que LinearLayout ocupe todo el ancho por sí mismo. ¡Normalmente debería evitar los diseños de anidamiento innecesariamente como este! Tal vez si alguien ve esto, ¿pueden indicarnos una mejor solución?

Como se ve:

EDITAR: Hay una excelente publicación de Roman Nurik donde explica una forma de hacer esto muy bien.

EDIT 2: Si alguien tiene curiosidad, la forma correcta de diseñar los botones para que amplíen el ancho de la barra de acciones sin la necesidad de anidar sus diseños como hice anteriormente, es establecer la vista personalizada con los parámetros de diseño adecuados que permitan su componente para que coincida con el grupo principal.

Esencialmente:

actionBar.setCustomView(view,new ActionBar.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));