操纵栏拉伸标签

时间:2015-01-18 13:09:18

标签: java android android-viewpager

是否可以使用标签完全填充操作栏? 目前我的标签在普通手机上延伸,但是当我去平板电脑时,它非常小。

我已经发现了这个:

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>

但仍然无法正常工作

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

首先,请允许我告诉您,这种用于实现标签的技术(作为ActionBar的导航模式)已被弃用。您应该使用寻呼机适配器,它将与ToolBar很好地配合使用。有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。但我认为你的计算不太清晰,所以我不确定它是否也是错的。

相关问题