片段布局列表< - >细节

时间:2012-04-21 16:56:47

标签: android fragment viewflipper portrait detail

我想实现一个具有以下设计的布局:

风景: 左侧的项目清单,右侧的详细信息

人像: 项目清单,仅点击

后的详细信息

为了实现这一点,我遵循了这些教程: Tutorial 1 Tutorial 2

它按预期工作。

但是,不是在纵向和点击Listitem时开始新的活动, 我希望片段被细节替换,这样我就可以设置过渡动画。

所以我玩了一遍并且对这些观点产生了疑问。之后我阅读了以下文章,并修改了我的布局以使用占位符以编程方式添加片段: Article

单击listitem时触发的操作只是用详细信息片段替换容器中的列表片段。

但是现在如果我恢复到横向,布局的列表部分将显示详细信息而不是列表,因为我替换了内容。

有什么方法可以解决这个问题吗?

目前,我设法通过在布局,横向和纵向两个片段占位符,包装内容,隐藏和显示片段来实现这一点,但我不知道这是否是正确的方法?也许ViewFlipper会更好?

此处的动画也无法正常工作,因为我隐藏并显示在同一个交易中。

此外,如果我处于横向模式并单击列表项并显示数据,并且我返回纵向,我希望显示数据视图,而不是列表,但只有数据已经​​显示。

Atm我通过传递给意图数据的标志来管理它,并再次显示/隐藏正确的视图。

任何其他想法?

非常感谢,现在已经尝试了几个小时!

修改 我遇到的主要问题是,我设置的幻灯片输入/输出动画播放不正确,因为我隐藏并在一个事务中显示片段。它只是隐藏了一个片段并在另一个片段中滑动,因此第一个片段没有滑出:/

要了解我的意思,以下是我在片段测试应用中实现的方法:

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <FrameLayout
        android:id="@+id/details_Fragment_Placeholder"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" >
    </FrameLayout>

    <FrameLayout
        android:id="@+id/main_Fragment_Placeholder"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </FrameLayout>

</LinearLayout>

ListFragment onListItemClick:

@Override
    public void onListItemClick(ListView l, View v, int position, long id) {
FragmentManager fragmentManager = getFragmentManager();
        Screen2Fragment fragment2 = (Screen2Fragment) fragmentManager
                .findFragmentByTag(Screen2Fragment.TAG);

        if (fragment != null) {

            if ((getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)) {

                        .beginTransaction();

                transaction.setCustomAnimations(R.anim.slide_in_right,
                        R.anim.slide_out_left, android.R.anim.slide_in_left,
                        android.R.anim.slide_out_right);

                Screen1ListFragment fragment1 = (Screen1ListFragment) fragmentManager
                        .findFragmentByTag(Screen1ListFragment.TAG);
                transaction.hide(fragment1);
                transaction.show(fragment2);

                transaction.addToBackStack("ReturnToScreen1");

                transaction.commit();

            }
        }
    }

1 个答案:

答案 0 :(得分:0)

当您最初放置列表片段时,需要将其放入后台堆栈,然后覆盖详细信息片段中的后退按钮,以便在按下时从后台堆栈中弹出列表视图。