我正在使用谷歌的SlidingTabLayout.由于我只有3个标签要显示,我看到最后一个标签后的空格.请截图如下.

有人可以解释我如何使标签适合整个屏幕.谢谢你的时间.
iFo*_*sts 97
在setViewPager()之前使用它:
slidingTabs.setDistributeEvenly(true);
如果出现此错误Cannot resolve method 'setDistributeEvenly(boolean)',则应从Google I/O源代码更新SlidingTabLayout.java和SlidingTabStrip.java:
Sub*_*iem 44
在SlidingTabLayout.java,找到
protected TextView createDefaultTabView(Context context)
并将这些行添加到该方法:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
textView.setWidth(size.x / 3);
这为我解决了这个问题.基本上,您将获得屏幕的宽度并除以3(标签的数量),并将其设置为构成标签的宽度TextField.
更新:
在当前的源代码中,谷歌添加了一种setDistributeEvenly(Boolean);方法,因此您可以使用slidingTabs.setDistributeEvenly(true);.使用旧的源代码时,可以使用我上面的解决方案,也可以更新到最新的源代码(建议使用后者).
Ach*_*nha 10
更改SlidingTabLayout.java文件可能会有所帮助.但是,该解决方案似乎不太通用.在SlidingTabLayout.java文件中,搜索方法
protected TextView createDefaultTabView(Context context)
在TextView"set"方法下,输入以下代码.
textView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f));
每个标签条仅仅是一个自定义的LinearLayout.
SubliemeSiem的答案是正确的.更灵活,更简洁的答案是为组成选项卡的每个TextView添加1的权重.
protected TextView createDefaultTabView(Context context)
在撰写本文时,它是第171行.将此行添加到该函数中.
textView.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
TableLayout.LayoutParams有三个参数,最后一个是权重.由于水平布局中的所有视图都具有相同的权重,因此它们的大小相同.随着标签数量的增加和大小溢出屏幕的宽度,包装内容应该允许优雅的行为,但我没有测试过..
您可以创建自定义选项卡布局并将其分配给SlidingTabLayout以进行膨胀.
custom_tab.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/customTab">
  <TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/customText"/>
</FrameLayout>
在你的代码中:
    viewPager = (ViewPager) rootView.findViewById(R.id.viewPager);
    viewPager.setAdapter(new SampleAdapter(getChildFragmentManager()));
    SlidingTabLayout tabLayout = (SlidingTabLayout)rootView.findViewById(R.id.slidingTab);
    tabLayout.setCustomTabView(R.layout.custom_tab,R.id.customText);
    tabLayout.setViewPager(viewPager);
通过将宽度保持为0 dp并将权重保持为1(数字是任意的),布局应该注意为所有选项卡提供相等的屏幕空间.这也适用于任意数量的选项卡.您不需要修改SlidingTabLayout.java.
| 归档时间: | 
 | 
| 查看次数: | 23783 次 | 
| 最近记录: |