我已按照此示例创建了一个非常好的滑动选项卡式布局:http://developer.android.com/samples/SlidingTabsColors/project.html
这是非常好的,但我希望标签条适合整个屏幕长度.我现在只有4个项目,并且在显示所有内容后滑动选项卡才会停止.我希望它适合整个屏幕,就像最新的Facebook应用程序中使用的那样.
有没有人有想法?
小智 5
由于SlidingTabStrip类扩展了LinearLayout,因此可以使用权重来影响每个视图在Layout中占用的空间.
就我而言,如果选项卡中还有剩余空间,我希望视图使用相同的空间量.我所做的是修改SlidingTabLayout类,它填充标签条.该addView()方法被更改为提供LayoutParams,为每个添加的视图指定相等的权重.
如果视图小于列表条的总可用大小,则会强制视图占用整个空间,并且如果所有视图的总大小大于条带的可用大小,则视图具有与原始实现相同的行为.
原始代码:
private void populateTabStrip() {
final PagerAdapter adapter = mViewPager.getAdapter();
final View.OnClickListener tabClickListener = new TabClickListener();
for (int i = 0; i < adapter.getCount(); i++) {
View tabView = null;
TextView tabTitleView = null;
if (mTabViewLayoutId != 0) {
// If there is a custom tab view layout id set, try and inflate it
tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
false);
tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabTitleView == null && TextView.class.isInstance(tabView)) {
tabTitleView = (TextView) tabView;
}
tabTitleView.setText(adapter.getPageTitle(i));
tabView.setOnClickListener(tabClickListener);
mTabStrip.addView(tabView);
}
}
Run Code Online (Sandbox Code Playgroud)
修改后的代码
private void populateTabStrip() {
final PagerAdapter adapter = mViewPager.getAdapter();
final View.OnClickListener tabClickListener = new TabClickListener();
for (int i = 0; i < adapter.getCount(); i++) {
View tabView = null;
TextView tabTitleView = null;
if (mTabViewLayoutId != 0) {
// If there is a custom tab view layout id set, try and inflate it
tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
false);
tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabTitleView == null && TextView.class.isInstance(tabView)) {
tabTitleView = (TextView) tabView;
}
tabTitleView.setText(adapter.getPageTitle(i));
tabView.setOnClickListener(tabClickListener);
mTabStrip.addView(tabView, new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.0f));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |