안드로이드 조각은 작업에서 전하지만,태블릿
-
13-11-2019 - |
문제
나는 안드로이드 앱은 다양한 레이아웃을 위해 전화 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()메소드가 호출됩니다.
어떤 아이디어가?
해결책
수가 있는 두 개의 LinearLayouts
로 id
의 @+id/viewRoot
에서 당신의 계층 구조(에서 하나 gameactivity.xml 에 한 조각 C xml)?
나는 생각하고 그것을 시도 할 수 있다 붙이는 조각에서는 잘못된 점에서 계층을 위한 어떤 이유로,하지만 내가 말할 수 없이 왜 이것이 단지에 대한 문제는 하나의 화면 레이아웃이 있습니다.
편집:
그것은 될 수 있는 태블릿의 gameactivity.xml 단순히 포함되어 더 이상 방한 아이는 전망입니다.즉당신은 최고 수준 LinearLayout
을 포함하는 두 자녀 LinearLayout
s.나는 그 자녀 LinearLayout
s 되었으로 구성된 layout_height
고 layout_width
을 위해 그들은 채우 부모입니다.는 경우 다음을 추가 또 다른 보 부모 LinearLayout
,그것은 아마 없을 것이다 나머지 공간을 렌더링합니다.
어떤 경우 부모 포장 LinearLayout
에 FrameLayout
와 그의 id @+id/viewRoot
s 는 새로운 조각할 수 있는 오버레이는 기존의 조각?