【问题标题】:Android Activity Layout with Multiple Fragments具有多个片段的 Android Activity 布局
【发布时间】:2014-07-18 20:18:05
【问题描述】:

我是Android新手,未知太多,不知道从哪个方向寻找解决方案..希望有经验的开发者能启发我..

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

我的Main Activity是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之外,所以视图不能膨胀……那么正确的做法是什么?

【问题讨论】:

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


    【解决方案1】:

    使用RelativeLayout 作为MainActivity 的根。

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

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 2014-11-02
      • 2013-07-23
      • 1970-01-01
      • 2013-07-01
      • 2018-06-11
      • 2015-08-13
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多