support studio spigot item getsupportactionbar bar actionbar android android-actionbar

studio - Android ActionBar-Empuje la vista personalizada a la parte inferior de la pantalla



android support action bar add button (2)

Así que logré encontrar una solución sucia para esto ... Bueno, sucio en mi opinión amateur ...

En el menú oncreateOptionsMenu, he inflado un menú llamado option_menu así:

@Override public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.option_menu, menu);

Y en el xml para ese elemento option_menu, he implementado un actionViewClass, y en este caso he usado un diseño relativo (supongo que podría haber usado View ...?):

<item android:id="@+id/layout_item" android:actionViewClass="android.widget.RelativeLayout" android:showAsAction="always|withText" android:title="Text 1"/> </menu>

Entonces, infle un diseño xml y lo agregué al layout_item definido en mi menú:

@Override public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.option_menu, menu); relativeLayout = (RelativeLayout) menu.findItem(R.id.layout_item) .getActionView(); View inflatedView = getLayoutInflater().inflate(R.layout.now_playing, null); relativeLayout.addView(inflatedView); return (super.onCreateOptionsMenu(menu)); }

Por favor, siéntase libre de editar / mejorar esta respuesta como mejor le parezca.

Tengo una barra de acción dividida, y estoy tratando de agregar una funcionalidad casi idéntica a la de ''Jugar ahora'' de Google Play.

Puedo obtener elementos del menú para que aparezcan en la parte inferior de la pantalla, utilizando el menú de creación de onCreateOptions, pero parece que no puedo obtener una vista personalizada para que aparezca en la parte inferior de la pantalla cuando uso actionBar.setCustomView. La vista personalizada se encuentra debajo de la barra de acción superior.

¿Alguien sabe cómo forzar la vista personalizada en la parte inferior, o agregar vistas personalizadas al menú onCreateOptions?

Aquí están los fragmentos de mi código:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); //Custom view to add actionBar.setCustomView(R.layout.albumitem); //This view shows up just under the top actionbar at the moment, despite menu items being at the bottom

El código de opciones del menú: (Estos se muestran en la parte inferior donde me gustaría que estuviera mi vista personalizada)

@Override public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.option_menu, menu); return (super.onCreateOptionsMenu(menu)); }

Creo que el menú que se está reproduciendo en la parte inferior de la aplicación de música Google Play es una vista personalizada dentro de una barra de acción dividida:


He hecho una solución basada en la suya, que incluye un diseño personalizado en la parte superior + diseño personalizado en la parte inferior + título / subtítulo + icono de inicio. Aquí está el código:

public class SplitABActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar ab = getActionBar(); ab.setTitle("Action Bar Title"); ab.setSubtitle("Action Bar Subtitle"); ab.setDisplayShowHomeEnabled(true); LayoutInflater inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE); RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.ab_custom_layout, null); ab.setCustomView(layout); ab.setSplitBackgroundDrawable(new ColorDrawable(Color.BLUE)); ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_including_layout, menu); RelativeLayout layout = (RelativeLayout) menu.findItem(R.id.layout_item).getActionView(); View v = getLayoutInflater().inflate(R.layout.ab_bottom_layout, null); layout.addView(v); return super.onCreateOptionsMenu(menu); } }

ab_custom_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" > <TextView android:id="@+id/element1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:background="#ff0000" android:text="Element 1"/> <TextView android:id="@+id/element2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000" android:background="#f0f0f0" android:layout_toRightOf="@+id/element1" android:text="Element 2"/> </RelativeLayout>

menu_including_layout.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action1" android:title="Action 1" android:icon="@android:drawable/ic_dialog_alert" android:showAsAction="ifRoom" /> <item android:id="@+id/action2" android:title="Action 2" android:icon="@android:drawable/ic_dialog_info" android:showAsAction="ifRoom" /> <item android:id="@+id/layout_item" android:actionViewClass="android.widget.RelativeLayout" android:showAsAction="always|withText" android:title="Layout Item"/> </menu>

ab_bottom_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/bottom_layout_txt_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click this button"/> <ImageButton android:id="@+id/bottom_layout_btn_chat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_menu_camera" android:layout_toRightOf="@+id/bottom_layout_txt_status" android:contentDescription="@string/app_name"/> </RelativeLayout>

El código funciona perfecto para mí. Puedo ver la barra de acción dividida cuando mi tableta está en retrato. En el paisaje es lo suficientemente amplio como para almacenar todos los elementos en la parte superior.

Espero eso ayude