我正在开发一个Android项目,并且在双窗格布局(列表+详细信息)方面遇到了问题。
现状:
问题:
如果用户(设备屏幕宽度大于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应用程序。
答案 0 :(得分:0)
您可以使用应用的导航抽屉方案来完成所需的行为。最后,布局的两个部分(抽屉和细节)都是片段,您可以使用一个布局,就像普通的导航抽屉一样,来回滑动。然后在您的平板电脑布局中,使片段不会滑动,只是永久可见。在您的主要活动中,您可以实现逻辑以查看屏幕大小并推断其是否为平板电脑。然后,您将拥有动态布局,而无需创建不同的活动。
我还会查看this指南。