单窗格到双窗格

时间:2014-11-16 23:20:53

标签: android android-layout android-fragments

我正在开发一个Android项目,并且在双窗格布局(列表+详细信息)方面遇到了问题。

现状:

  • 为宽度大于600dp和横向的屏幕工作双窗格布局(如GMail-App)。
  • 从双窗格切换到单窗格布局
  • 为任何方向宽度小于600dp的设备使用单窗格布局。

问题:

如果用户(设备屏幕宽度大于600dp)处于纵向模式并选择列表项,则弹出详细视图(这是正确的)。如果用户现在将方向更改为横向,则布局应更改为包含列表和所选详细信息视图的双窗格布局。但该应用程序保留在单窗格布局中。

在我看来,问题是由于我在单窗格模式下启动新活动而不是交换某些片段。但我真的不知道如何实现这一点。

以下代码显示了如果用户选择列表项会发生什么。

@Override
public void onItemSelected(AndroidCalendar calendar) {
    if (mTwoPane) {
        // two-pane mode
        Bundle arguments = new Bundle();
        arguments.putSerializable(CalendarDetailFragment.CALENDAR, calendar);
        CalendarDetailFragment fragment = new CalendarDetailFragment();
        fragment.setArguments(arguments);
        getFragmentManager().beginTransaction()
                .replace(R.id.calendaritem_detail_container, fragment)
                .commit();

    } else {
        // single-pane mode
        Intent detailIntent = new Intent(this, CalendarDetailActivity.class);
        detailIntent.putExtra(CalendarDetailFragment.CALENDAR, calendar);
        startActivity(detailIntent);
    }

例如,Boxer应用程序(EMail)和gReader支持此行为。我也认为GMail应用程序。

1 个答案:

答案 0 :(得分:0)

您可以使用应用的导航抽屉方案来完成所需的行为。最后,布局的两个部分(抽屉和细节)都是片段,您可以使用一个布局,就像普通的导航抽屉一样,来回滑动。然后在您的平板电脑布局中,使片段不会滑动,只是永久可见。在您的主要活动中,您可以实现逻辑以查看屏幕大小并推断其是否为平板电脑。然后,您将拥有动态布局,而无需创建不同的活动。

我还会查看this指南。