Tôi đã cố gắng sử dụng setActionView từ ActionBar trong ICSAndroid ActionBar setActionXem vấn đề bố cục
Dường như nó phải thẳng về phía trước nhưng bằng cách nào đó tôi không nhận được sự sắp xếp bố cục mà tôi hy vọng. Như bạn có thể thấy trong hình bên dưới biểu tượng 'target' được căn giữa trong layout của nó. Nhưng khi tôi setActionBar (tiến trình), chế độ xem tiến trình luôn được căn chỉnh ở bên phải bất kỳ điều gì tôi thử.
Sau đây là 2 quốc gia, trước và sau khi nhấp vào mục menu. Như bạn có thể thấy chế độ xem tiến trình luôn được căn chỉnh ở bên phải. Tôi đã thử thay đổi các tùy chọn trọng lực trong bố cục tiến trình xml của tôi từ trái sang phải đến trung tâm và bất cứ điều gì tôi thay đổi nó dường như không thay đổi bất cứ điều gì.
Tôi chưa tìm thấy bất kỳ thông tin nào liên quan đến vấn đề này nên tôi nghĩ tôi phải làm điều gì đó sai.
Có ai có đầu mối không? Cảm ơn sự giúp đỡ!
Dưới đây là thanh hành động của tôi đơn bố trí '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>
Dưới đây là progressbar tôi bố trí '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>
Và cuối cùng đây của Hoạt động testx tôi
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;
}
}
Có bạn đang hoàn toàn đúng :). Thx cho sự giúp đỡ nó rất đánh giá cao. –