Actionbar 拉伸选项卡
Actionbar stretch out tabs
是否可以用选项卡填满操作栏?
目前我的标签在正常 phone 上伸展开,但当我使用平板电脑时它非常小。
我已经找到了:
private void setTabsMaxWidth() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
final ActionBar actionBar = getActionBar();
final View tabView = actionBar.getTabAt(0).getCustomView();
final View tabContainerView = (View) tabView.getParent();
final int tabPadding = tabContainerView.getPaddingLeft() + tabContainerView.getPaddingRight();
final int tabs = actionBar.getTabCount();
for(int i=0 ; i < tabs ; i++) {
View tab = actionBar.getTabAt(i).getCustomView();
TextView text1 = (TextView) tab.findViewById(R.id.tab_title);
text1.setMaxWidth(screenWidth/tabs-tabPadding-1);
}
}
并结合选项卡上的自定义视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/tab_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="TEST"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
</LinearLayout>
但还是不行
有什么想法吗?
谢谢
首先让我告诉您,这种用于实现选项卡(作为 ActionBar 的导航模式)的技术已被弃用。您应该改用寻呼机适配器,它可以很好地与工具栏配合使用。有带有 SlidingTabLayouts 的官方 android 示例向您展示了如何实现它,see this dev byte for some more info.
其次,如果你沿着 SlidingTabsLayout 路线走,在 createDefaultTabView() 方法中,我添加了这个以确保我的两个选项卡平均填充屏幕宽度:
//Set tabs to take up entire screen width
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(size);
}
else
{
size.set(display.getWidth(), display.getHeight());
}
textView.setWidth(size.x / 2);
快速浏览一下您的代码,我认为您应该设置文本视图的宽度,而不是 maxWidth。但是我觉得你的计算不太清晰,所以我不确定它是否也有误。
是否可以用选项卡填满操作栏? 目前我的标签在正常 phone 上伸展开,但当我使用平板电脑时它非常小。
我已经找到了:
private void setTabsMaxWidth() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
final ActionBar actionBar = getActionBar();
final View tabView = actionBar.getTabAt(0).getCustomView();
final View tabContainerView = (View) tabView.getParent();
final int tabPadding = tabContainerView.getPaddingLeft() + tabContainerView.getPaddingRight();
final int tabs = actionBar.getTabCount();
for(int i=0 ; i < tabs ; i++) {
View tab = actionBar.getTabAt(i).getCustomView();
TextView text1 = (TextView) tab.findViewById(R.id.tab_title);
text1.setMaxWidth(screenWidth/tabs-tabPadding-1);
}
}
并结合选项卡上的自定义视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/tab_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="TEST"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
</LinearLayout>
但还是不行
有什么想法吗?
谢谢
首先让我告诉您,这种用于实现选项卡(作为 ActionBar 的导航模式)的技术已被弃用。您应该改用寻呼机适配器,它可以很好地与工具栏配合使用。有带有 SlidingTabLayouts 的官方 android 示例向您展示了如何实现它,see this dev byte for some more info.
其次,如果你沿着 SlidingTabsLayout 路线走,在 createDefaultTabView() 方法中,我添加了这个以确保我的两个选项卡平均填充屏幕宽度:
//Set tabs to take up entire screen width
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(size);
}
else
{
size.set(display.getWidth(), display.getHeight());
}
textView.setWidth(size.x / 2);
快速浏览一下您的代码,我认为您应该设置文本视图的宽度,而不是 maxWidth。但是我觉得你的计算不太清晰,所以我不确定它是否也有误。