0

アクションアイテムの選択時に追加する小さなサイドバーフラグメントがあります。幅は固定されており、サイドバーが表示されるように少し圧縮されるアクションアイテムを選択するまで、メインビューが全画面表示されることを望んでいます。

私は、relative toleftOf / RightOfや、さまざまなレイアウト/幅の組み合わせなど、かなりの数のことを試しました。ウェイト付きのLinearLayoutを使用しない限り、サイドバーが常に全画面表示になります。半ば機能するLinearLayoutウェイトの問題は、画面の%を使用するため、さまざまな画面サイズで信頼性の低い効果が発生することです。

誰かが似たようなことをやってのけましたか?

 ______    _
|      |  | |
| Main |<-|S|
|______|  |_|

現在半ば機能しているxml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false" >

    <FrameLayout
        android:id="@+id/frameLayoutImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
    </FrameLayout>

    <!-- This will initially have no content/collapsed -->
    <FrameLayout
        android:id="@+id/frameLayoutEdit"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="right|top"
        android:layout_marginBottom="40dp"
        android:layout_weight="4" >

    </FrameLayout>

</LinearLayout>

フラグメントxml(固定幅の場合もあります):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout />

    <Button />

    <Button />

</RelativeLayout>

フラグメントの追加:

// This should just push the frame layout the necessary width to display the fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frameLayoutEdit, xmpFrag);
4

2 に答える 2

1

サイドバーに重みを設定しないでください。固定サイズ(またはwrap_content)を設定し、メインコンテンツのlayout_widthを0dpに設定します。

必要な効果に応じて、両方をFrameLayoutに配置して、メインフラグメントを縮小するのではなく、サイドバーがメインフラグメントをオーバーレイするようにし、メインフラグメントを常に塗りつぶし、サイドバーを独自のサイズにすることができます。

于 2013-03-19T03:45:11.913 に答える
0

これは、上記の回答に対する実際の動作コードです(論理的な飛躍を支援してくれたScottに感謝します)。

<FrameLayout
    android:id="@+id/frameLayoutImage"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" 
    android:layout_weight="1">
</FrameLayout>

<!-- This will initially have no content/collapsed -->
<FrameLayout
    android:id="@+id/frameLayoutEdit"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="right|top"
    android:layout_marginBottom="40dp" >

</FrameLayout>

断片:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout />

    <Button />

    <Button />

</RelativeLayout>
于 2013-03-19T04:34:11.233 に答える