具有多个片段的Android活动布局

时间:2014-07-18 10:28:46

标签: android android-layout android-fragments android-viewpager fragmentpageradapter

我是Android的新手,有太多的未知,我甚至不知道寻找解决方案的方向..我希望有经验的开发人员可以启发我...

我的UI设计与普通的Android应用程序布局完全不同,到目前为止我看到的大多数都使用了Tabs或左上角控件按钮..

我的主要活动是1)全屏没有ActionBar 2)有一个固定的“控制面板”层占据屏幕的下半部分3)全屏ViewPager(包含三个页面,可以向左和向右滑动)下面“控制面板”层。

我能够实现1& 2或1& 3但不是全部。我认为主要的问题是在同一个屏幕上将控制面板添加到ViewPager的顶部。

我试图将ViewPager和“控制面板”作为MainActivity布局中的两个片段..它不起作用......下面是布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:id="@+id/container"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              tools:context="com.example.MainActivity">

    <fragment
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            tools:layout="@layout/fragment_pager"/>

    <fragment android:name="com.example.MainFragment"
              android:layout_width="fill_parent"
              android:layout_height="200dip"
              android:layout_gravity="bottom"
              tools:layout="@layout/fragment_main"/>

</LinearLayout>

如果您需要更多信息,请同时附上我的MainActivity

public class MainActivity extends FragmentActivity {
    static final int NUM_ITEMS = 3;

    private FragmentPagerAdapter mAdapter;
    private ViewPager mPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();
        actionBar.hide();

        setContentView(R.layout.activity_main);

        mAdapter = new DashboardAdapter(getSupportFragmentManager());
        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        mPager.setCurrentItem(1);
    }

    public static class DashboardAdapter extends FragmentPagerAdapter {

        public DashboardAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new FirstFragment();
                case 1:
                    return new SecondFragment();
                case 2:
                    return new ThirdFragment();
                default:
                    return null;
            }
        }
    }
}

我有错误膨胀类片段,所以当我创建片段时可能会发生

inflater.inflate(R.layout.first_fragment, container, false);

因为“控制面板”在ViewPager之外,所以视图不能膨胀......那么这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

使用RelativeLayout作为MainActivity

的根

ViewPager应该是match_parent的第一个孩子。 您的控制面板可以使用layout_alignParentBottom="true"在底部对齐。这也将使其位于ViewPager

之上