Problem z układem Android ActionBar setActionView
Próbowałem użyć setActionView z ActionBar w ICS
Wygląda na to, że powinno być prosto, ale w jakiś sposób nie uzyskuję wyrównania układu, na które mam nadzieję. Jak widać na obrazku poniżej, ikona „celu” jest prawidłowo wyśrodkowana w swoim układzie. Ale kiedy I setActionBar (postęp) widok postępu jest zawsze wyrównany do prawej strony, co próbuję.
Oto 2 stany przed i po kliknięciu pozycji menu. Jak widać, widok postępu jest zawsze wyrównany do prawej strony. Próbowałem zmienić opcje grawitacji w xml mojego układu postępu od lewej do prawej do centrum i cokolwiek zmieniam, nie wydaje się, żeby cokolwiek zmieniło.
Nie znalazłem żadnych informacji dotyczących tego problemu, więc myślę, że muszę robić coś złego.
Czy ktoś ma jakąś wskazówkę? Dzięki za pomoc!
Oto układ menu paska akcji „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>
Oto mój układ paska postępu „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>
I wreszcie moja aktywność testx
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;
}
}