que he estado tratando de utilizar el setActionView de la Barra de acciones en el ICSAndroid Barra de acciones setActionView cuestión de diseño
parece que debería ser simple pero de alguna manera no estoy recibiendo la composición de alineación que iba a esperar. Como puede ver en la imagen a continuación, el ícono de "objetivo" se centra correctamente dentro de su diseño. Pero cuando establezco ActionBar (progreso), la vista de progreso siempre se alinea a la derecha, sea lo que sea que intente.
Éstos son los 2 estados, antes y después de hacer clic en el elemento de menú. Como puede ver, la vista de progreso siempre está alineada a la derecha. He intentado cambiar las opciones de gravedad en mi layout xml de izquierda a derecha en el centro y lo que sea que cambie no parece cambiar nada.
No he encontrado ninguna información sobre este problema, así que estoy pensando que debo estar haciendo algo mal.
¿Alguien tiene una pista? ¡Gracias por la ayuda!
Aquí está mi barra de acción de menú front end 'action_bar_menu.xml'
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/locate"
android:title="locate"
android:icon="@drawable/locate"
android:showAsAction="ifRoom|withText" />
</menu>
Aquí está mi diseño progressbar 'inderterminate_progress.xml'
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ProgressBar android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center"
android:indeterminate="true"
style="?android:attr/progressBarStyleInverse"/>
</FrameLayout>
Y finalmente aquí está mi testx Actividad
public class HelloAndroidActivity extends Activity {
/**
* Called when the activity is first created.
* @param savedInstanceState If the activity is being re-initialized after
* previously being shut down then this Bundle contains the data it most
* recently supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it is null.</b>
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getActionBar().setTitle("Test");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_bar_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
if (R.id.locate == item.getItemId()) {
final MenuItem menuItem = item.setActionView(R.layout.inderterminate_progress);
new Thread(new Runnable() {
@Override
public void run() {
SystemClock.sleep(3000);
runOnUiThread(new Runnable() {
@Override
public void run() {
menuItem.setActionView(null);
}
});
}
}).start();
}
return true;
}
}
Si estás totalmente a la derecha :). Gracias por la ayuda es muy apreciada. –