Sto tentando di visualizzare uno spinner nella stessa posizione in cui appare il titolo predefinito della barra delle azioni. Ho seguito le istruzioni del simile SO case here, così sono riuscito a eliminare il titolo, ma ancora la posizione del filatore non è allineato a sinistra, come si può vedere da questo screen-shotSostituisci il titolo della barra delle azioni con uno spinner (menu a discesa)
Ecco le principali definizioni di mia applicazione per riprodurre questo caso:
AndroidMenifest.xml:
<application
android:label="app"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.AppCompat" >
...
<activity
android:name="gm.activities.ViewAllActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="gm.activities.MainActivity" />
</activity>
menu_view_all.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="gm.activities.ViewAllActivity">
<item android:id="@+id/spinner"
android:title="will be replaced anyway"
app:showAsAction="ifRoom"
app:actionViewClass="android.widget.Spinner"
android:layout_gravity="left"
android:gravity="left"/>
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
e l'attività in questione:
public class ViewAllActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_all_activity);
getSupportActionBar().setDisplayShowTitleEnabled(false);
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_view_all, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
spinner.setGravity(Gravity.LEFT);
SpinnerAdapter adapter;
spinner.setAdapter(ArrayAdapter.createFromResource(this,
R.array.all_table_views, android.R.layout.simple_spinner_item));
spinner.setOnItemSelectedListener(this); // set the listener, to perform actions based on item selection
return true;
}
Così - Posso allineare il filatore a sinistra della barra delle operazioni e come? E 'corretto usare lo spinner all'interno della barra di azione e impostarlo attraverso il file menu.xml come ho fatto io?
Volevo anche menzionare che chiamare 'setGravity()' su una 'Vista 'influenza il contenuto di' View', non la sua posizione di layout. Solo FYI. –
Grazie! questa è la soluzione che ho implementato, in base al tuo suggerimento: http://stackoverflow.com/questions/15542059/spinner-in-actionbar-doesnt-appear – GyRo
@GyRo Cool! Sono contento di sapere che hai funzionato. Volevo solo menzionare che quel metodo funzionerebbe ancora se dovessi decidere in futuro di usare un 'Toolbar' come il tuo supporto' ActionBar'. Assicurati di chiamare 'setSupportActionBar()' con esso. Saluti! –