문제

나는 안드로이드 앱은 다양한 레이아웃을 위해 전화 vs 태블릿입니다.전화,내 게임 활동의 레이아웃으로 작동합 탭 UI4 탭는 그들을 A,B,C,D.나는 tabbar 의 버튼과 ViewFlipper 으로 4 개 조각에 있습니다.그래서 그들 C 탭 ViewFlipper 보여주는 아이는 FragmentC.FragmentC 포함 ListView.경우 사용자 탭에는 다음 항목을 보여주고 싶 상세보기는 항목입니다.그래서,FragmentC 추가하는 새로운 DetailFragment 로 FragmentTransaction.이 새로운 DetailFragment 커버 FragmentC 니다.저는 기본적으로 노력을 얻 uinavigationcontroller 가 행동의 유형은 경우 익숙합니다.이것이 잘 작동합니다.

에 태블릿 내 게임 활동의 레이아웃은 분할 화면으로 4 동일한 사분면으로 FragmentA,FragmentB,FragmentC 및 FragmentD.에 나타나는 작품이 정밀하고,그들 모두가 표시됩니다.그러나,때에 태블릿 UI 를 눌렀을 경우 하나의 항목에서트 뷰에서 FragmentC 의 코드를 실행을 추가하는 새로운 조각,그러나 아무것도 보여줍니다.

화 gameactivity.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/viewRoot" ...>
    <LinearLayout android:id="@+id/tabBarRoot" ...>
        <Button ... />
        <Button ... />
        <Button ... />
        <Button ... />
    </LinearLayout>

    <ViewFlipper android:id="@+id/viewFlipperMainMenu" ...>
        <fragment class="FragmentA" ... />
        <fragment class="FragmentB" ... />
        <fragment class="FragmentC" ... />
        <fragment class="FragmentD" ... />
    </ViewFlipper>
</RelativeLayout>

나 태블릿 gameactivity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewRoot" ... >
    <LinearLayout ... >
        <fragment class="FragmentB" ... />
        <fragment class="FragmentA" ... />
    </LinearLayout>

    <LinearLayout ... >
        <fragment class="FragmentC" ... />
        <fragment class="FragmentD" ... />
    </LinearLayout>

</LinearLayout>

FragmentC 의 레이아웃 xml 모두에 대한 전화 및 태블릿:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewRoot" ... >

    <ListView android:id="@+id/listView" ... />

</LinearLayout>

을 때는 목록 항목에서 FragmentC 도청,FragmentC 추가하는 새로운 DetailFragment 다음과 같은 코드:

public void pushNewFragment(Fragment fragment, String description) {
    FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();

    transaction.add(R.id.viewRoot, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .addToBackStack(description).commit();
}

전화,이 잘 작동하고 DetailFragment 보여줍니다.에 태블릿,아무것도 눈에 띄게 발생할 때 pushNewFragment()메소드가 호출됩니다.

어떤 아이디어가?

도움이 되었습니까?

해결책

수가 있는 두 개의 LinearLayoutsid@+id/viewRoot 에서 당신의 계층 구조(에서 하나 gameactivity.xml 에 한 조각 C xml)?

나는 생각하고 그것을 시도 할 수 있다 붙이는 조각에서는 잘못된 점에서 계층을 위한 어떤 이유로,하지만 내가 말할 수 없이 왜 이것이 단지에 대한 문제는 하나의 화면 레이아웃이 있습니다.

편집:

그것은 될 수 있는 태블릿의 gameactivity.xml 단순히 포함되어 더 이상 방한 아이는 전망입니다.즉당신은 최고 수준 LinearLayout 을 포함하는 두 자녀 LinearLayouts.나는 그 자녀 LinearLayouts 되었으로 구성된 layout_heightlayout_width 을 위해 그들은 채우 부모입니다.는 경우 다음을 추가 또 다른 보 부모 LinearLayout,그것은 아마 없을 것이다 나머지 공간을 렌더링합니다.

어떤 경우 부모 포장 LinearLayoutFrameLayout 와 그의 id @+id/viewRoot s 는 새로운 조각할 수 있는 오버레이는 기존의 조각?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top