Emi*_*Adz 8 android android-layout android-fragments android-viewpager
我需要设计以下屏幕,我需要你的建议:

说明:
标题是静态/固定的,我不需要对它做任何事情.
黄色:这是有趣的部分,我需要设计一个ViewPager类似的屏幕,能够向左/右滚动最多4个屏幕.
红色:在每个屏幕中,我需要添加一个可滚动的表格/网格,如果它不适合屏幕大小.
绿色:可以使用屏幕底部的绿色按钮或通过滚动来完成页面切换ViewPager.
问题是:这种行为可以使用ViewPager或者我应该使用Fragments吗?如果Fragment是要走的路,那么我将如何使用滑动手势实现页面切换?如果它是一个ViewPager然后如何添加内部滚动以及如何使用底部的按钮控制它?
任何帮助将不胜感激,谢谢.
我认为这应该用Non Swipeable 来解决ViewPager.视图寻呼机和底层Fragments无法响应滑动手势.覆盖禁用滑动的方法ViewPager有:
onTouchEvent()- 退货false.onInterceptTouchEvent()- 退货false.有关如何实现此目的的更多信息,请参阅此SO问题.
接下来,您希望Fragment在每个寻呼机持有者中使用s.所以我们正在构建以下布局:

在父活动FragmentPagerAdapter中,实例化a并且您的选项卡添加了标记:
@Override
protected void onCreate(final Bundle saveInstanceState) {
final FragmentPagerAdapter myTabAdapter = new MyFragmentPagerAdapter(
<Your ViewPager View>, <Your activity context, this>);
myTabAdapter.addTab(getActionBar().newTab(), "YOUR TAG", "Your Title");
// etc...
}
Run Code Online (Sandbox Code Playgroud)
所以这给了我们上图的框架.托管活动,包含a ViewPager和底层选项卡.接下来是将Fragments(包含表格)放入每个相应的选项卡中.这由FragmentPagerAdapter实现处理:
private class MyFragmentPagerAdapter extends FragmentPagerAdapter implements
ActionBar.TabListener, ViewPager.OnPageChangeListener {
/**
* Constructs a pager adapter to back a {@link ViewPager}.
*
* @param pager
* The {@link ViewPager} widget.
* @param activityContext
* The context the widget is being added under.
*/
public SpotMenuFragmentPagerAdapter(final ViewPager pager,
final Context activityContext) {
super(getFragmentManager());
pager.setAdapter(this);
this.context = activityContext;
}
/**
* Adds a tab to the hosting activity action bar.
*
* @param newTab
* The tab to add.
* @param tag
* The tab tag for id purposes.
* @param label
* The label of the tab displayed to the user.
*/
public void addTab(final ActionBar.Tab newTab, final String tag,
final String label) {
newTab.setTag(tag);
newTab.setText(label);
newTab.setTabListener(this);
getSupportActionBar().addTab(newTab);
}
/**
* This is where you do the work of building the correct fragment based
* on the tab currently selected.
*
* @see FragmentPagerAdapter#getItem(int)
*/
@Override
public Fragment getItem(final int position) {
final Tab tab = getActionBar().getTabAt(position);
if ("MY TAG".equals(tab.getTag().toString()) {
// instantiate the fragment (table) for "MY TAG"
} else {
// instantiate something else...
}
}
/**
* One fragment per tab.
*
* @see android.support.v4.view.PagerAdapter#getCount()
*/
@Override
public int getCount() {
return getSupportActionBar().getTabCount();
}
/**
* @see ViewPager.OnPageChangeListener#onPageScrollStateChanged(int)
*/
@Override
public void onPageScrollStateChanged(final int arg0) {
// No-op.
}
/**
* @see ViewPager.OnPageChangeListener#onPageScrolled(int, float, int)
*/
@Override
public void onPageScrolled(final int arg0, final float arg1,
final int arg2) {
// No-op.
}
/**
* @see ViewPager.OnPageChangeListener#onPageSelected(int)
*/
@Override
public void onPageSelected(final int position) {
getSupportActionBar().setSelectedNavigationItem(position);
}
/**
* @see TabListener#onTabSelected(app.ActionBar.Tab,
* app.FragmentTransaction)
*/
@Override
public void onTabSelected(final Tab tab, final FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
/**
* @see TabListener#onTabUnselected(ActionBar.Tab,
* app.FragmentTransaction)
*/
@Override
public void onTabUnselected(final Tab tab, final FragmentTransaction ft) {
// No-op.
}
/**
* @see TabListener#onTabReselected(ActionBar.Tab,app.FragmentTransaction)
*/
@Override
public void onTabReselected(final Tab tab, final FragmentTransaction ft) {
// No-op.
}
}
Run Code Online (Sandbox Code Playgroud)
所以希望在这一点上我们有一个活动主持一个'不可刷卡'的视图寻呼机和一个机制,用于切换标题栏下方标签栏形式的标签(或根据屏幕大小并排).从这一点来看,我相信你可以自定义用一些导航箭头替换标签栏.
注意:很多都是从记忆中写出来的,但希望我已经传达了我要去的地方的要点.
响应更新的问题:您可以将选项卡设置为任何旧视图.相应地设置TabSpec.道歉我自己没有用过这个.
| 归档时间: |
|
| 查看次数: |
8518 次 |
| 最近记录: |