gpt4 book ai didi

Android:如何针对不同的设备方向将 ViewPager 布局与非 ViewPager 布局混合使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:55 26 4
gpt4 key购买 nike

目标是根据屏幕方向(纵向或横向)以不同的布局在屏幕上显示两个 fragment ( fragment A、 fragment B)。

当设备处于纵向模式时,一次仅显示 Frag A 和 Frag B 之一,使用滑动在 UI 之间切换。 ViewPager 非常适合这个。

当设备处于 Landscape 模式时,Frag A 显示在屏幕左侧,Frag B 显示在右侧。一个简单的 LinearLayout 非常适合这个。

当试图让两者在同一个应用程序中工作时,问题就出现了。似乎必须在 Java 源代码中(在 onCreate 方法中)引用 ViewPager 类。这意味着在 XML 和源代码中都定义了一个 UI 元素……当设备处于横向模式时,这似乎是一个问题,不应该有 ViewPager 对象,但在源代码中引用了一个。我是否正确地处理了这个问题?如果一个布局使用 ViewPager,是否所有其他布局都需要一个 ViewPager?

layout/activity_mymain.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MyMainActivity" >

<!--
This title strip will display the currently visible page title, as well as the page
titles for adjacent pages.
-->

<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textColor="#fff" />

</android.support.v4.view.ViewPager>

layout-land/activity_mymain.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<fragment android:name="com.example.ActionFragment"
android:id="@+id/action_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />

<fragment android:name="com.example.SummaryFragment"
android:id="@+id/summary_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />

</LinearLayout>

来自 MyMainActivity.java

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_topmain);

// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

}

最佳答案

ViewPager用于在运行时实例化View对象,所以需要在代码中定义。

我尝试做的与 Fragments Guide 中描述的不同平板电脑/手机布局非常相似,他们建议在其中使用单独的 Activity。

(如果有人知道一种完全用 XML 处理滑动的方法,那将是一个更好的解决方案)

关于Android:如何针对不同的设备方向将 ViewPager 布局与非 ViewPager 布局混合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com