我正在使用SlidingTabLayout.java和SlidingTabStrip.java文件以及工具栏来创建可滑动的标签。
我现在遵循了几个不同的教程,并遇到了与我的标签显示方式相同的问题。我将setDistributeEvenly设置为true并将我的代码更改为有四个字符串而不是3.现在我的选项卡中的文本正在压缩而不是将宽度设置为最大字符串值,并允许在纵向模式下滑动溢出。在景观中,问题并不存在。 http://i.imgur.com/BAqIjlI.png vs http://i.imgur.com/JgwzXSo.png
如果我删除了一个字符串,问题就解决了,如果我添加另一个字符串,则允许溢出,但它不再均匀地设置宽度,但它在景观中再次正常工作。
我的理论是,考虑到文本长度,我的四个标签的计算宽度正在达到一些奇怪的"甜蜜"找我的屏幕尺寸。它太大了,无法在一个屏幕上包含自己,但它不足以触发溢出。
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_the_square);
Toolbar appToolbar = (Toolbar) findViewById(R.id.square_toolbar); //creates instance of app_toolbar to serve as actionbar
//setting toolbar to actionbar
setSupportActionBar(appToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false); //do not have app_toolbar Title
// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new TabFragmentPagerAdapter(getSupportFragmentManager(), TheSquare.this));
//Give slidingTabLayout ViewPager
SlidingTabLayout slidingTabLayout = (SlidingTabLayout) findViewById(R.id.tabs);
//Center the tabs in the layout
slidingTabLayout.setDistributeEvenly(true);
slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer(){
@Override
public int getIndicatorColor(int position){
return getResources().getColor(R.color.green);
}
});
slidingTabLayout.setViewPager(viewPager);
}
TabFragmentPagerAdapter.java
public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = 4;
private String tabTitles[] = new String[] { "Featured", "News", "Sports", "Life"};
private Context context;
public TabFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int position) {
return PageFragment.newInstance(position + 1);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return tabTitles[position];
}
}
main_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<include
android:id="@+id/square_toolbar"
layout="@layout/app_toolbar"/>
<com.squareoffs.squareoffs.SlidingTabs.SlidingTabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white"/>
我有点想要测试,感谢帮助。
答案 0 :(得分:0)
无法解决&#39;为什么&#39;问题,除了上面的理论,但我在每个字符串中添加了空格(&#34; News&#34; to&#34; News&#34;)所以它们的长度是相同的,至少在这种特殊情况下,它解决了这个问题。它不是一个理想的解决方案,因为我必须减少填充以确保选项卡中的所有内容看起来相似,如果我希望文本占用相同的空间但至少显示正确。