【问题标题】:Implementing Page View on an Existing Android Project在现有 Android 项目上实现页面视图
【发布时间】:2016-08-22 08:17:44
【问题描述】:

我正在尝试为我的 android 项目添加一些额外的布局,但我想用 Page View 来实现——你知道让布局相互滑动——。我在网上看到很多关于这方面的例子,我认为最好的例子是this one. 但我不知道如何将此代码放入我现有的项目中。你能给我一些关于这个问题的指导吗?也许是教程之类的。

我有两个布局,其中一个是activity_main.xml,另一个布局是:activity_weekly_weather.xml,它目前是空的。提前致谢。

【问题讨论】:

  • 您需要使用 ViewPager,上面您在问题上写的 url 显示了有关 viewpager 的所有信息。你可以处理。
  • 是的,我了解通用结构,我做了一个简单的示例,将这些类复制到一个新项目中。但我不知道如何把所有东西都放在我现有的项目上。这就是我寻求帮助的原因。

标签: android android-layout android-viewpager


【解决方案1】:

我将向您展示如何在您的活动中实现 viewpager,以及如何将适配器设置为 viewpager 并在 viewpager 中显示片段。

首先,您应该将 viewpager 添加到您的活动布局中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="42dp"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        app:tabIndicatorColor="@color/colorAccent"
        app:tabMode="fixed"
        app:tabTextColor="@color/white"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tabLayout"/>

</RelativeLayout>

那么你应该为你的viewpager设置adapter和tablayout:

ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);

TrialAdapter adapter = new TrialAdapter(this, getFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);

您需要实现 TrialAdapter,例如:

public class TrialAdapter extends FragmentStatePagerAdapter {

    private Context context;

    public TrialAdapter(Context context,FragmentManager fragmentManager) {
        super(fragmentManager);
        this.context = context;
    }

    @Override
    public Fragment getItem(int position) {
        if(position == 0){
            return new TrialFragment();
        } else{
            return new TrialFragment();
        }
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        return super.instantiateItem(container, position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }

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

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        if(position == 0){
            return "Tab-1";
        } else{
            return "Tab-2";
        }
    }
}

你应该像这样写你的片段

public class TrialFragment extends Fragment {

    private View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.fragment_trial, container, false);

        return view;
    }
}

最后,您应该在布局资源中创建 fragment_trial.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Trial Fragment"/>

</RelativeLayout>

我建议你使用android.app.Fragmentandroid.support.v13.app.FragmentStatePagerAdapter,所以你需要在你的gradle 文件(app 模块)中添加下面几行:

compile 'com.android.support:support-v13:+' // for FragmentStatePager
compile 'com.android.support:design:23.3.0' // for TabLayout

祝你好运。

【讨论】:

  • 由于我的项目结构,必须进行一些更改才能运行,但它确实有效!很努力。帮助很大,非常感谢:)
猜你喜欢
  • 2021-04-02
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 2015-09-06
  • 2011-01-14
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多