[英]Android ActionBar Tab Layout Not Full Width
我在Actionbar標簽布局中遇到了一些問題。 對於一些標簽不會伸展整個設備的寬度,這很奇怪,因為在遍歷至少10個示例之后,所有10個都將Actionbar的中心設置為其設備的整個寬度。 也許它與在平板電腦上進行測試有關,我不確定。 這是問題的圖像以及我的代碼。
謝謝。
容器:
public class ContainerActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = actionBar.newTab()
.setText("Mat")
.setTabListener(new TabListener<MatchesFragment>(
this, "Match", MatchesFragment.class));
actionBar.addTab(tab);
...
容器xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
分段:
public class MatchesFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.activity_matches, container, false);
return myFragmentView;
}
片段xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill_horizontal"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/report_tab" />
</LinearLayout>
嘗試使用全局布局偵聽器:
宣布:
int requestLayoutCounter = 0;
在onCreateView里面(rootView是主視圖):
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new MyGlobalListenerClass());
給容器一些id:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
然后為Fragment中的rootView聲明OnGlobalLayoutListener:
private class MyGlobalListenerClass implements ViewTreeObserver.OnGlobalLayoutListener {
@Override
public void onGlobalLayout() {
View v = (View) rootView.findViewById(R.id.container);
Display display = this.getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int[] dimension = new int[2];
dimension[0] = size.x; //width of the screen
dimension[1] = size.y; //height
v.getLayoutParams().width = (displaySize[0]);
if (requestLayoutCounter < 25){ //weird code but works for me on different devices
topLayout.requestLayout();
requestLayoutCounter++;
}
}
}
此代碼將在布局膨脹后更改容器的寬度,或者在更改內容或方向后,讓我知道它是否適合您
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.