2

アクティビティで SlidingPaneLayout を使用しています。

<android.support.v4.widget.SlidingPaneLayout     xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myslidingpanelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<!-- menu left -->
<LinearLayout
    android:id="@+id/menu"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#8d305f"
    android:orientation="vertical" >
...
</LineareLayout>

<!-- main page right-->
<LinearLayout
    android:id="@+id/right_main"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical" >
...
</LineareLayout>
</android.support.v4.widget.SlidingPaneLayout>

メニューがページの 3/4 をカバーするようにしたい すべての携帯電話で動作するようにしたいので、例を挙げることができません

android:layout_width="300dp"

画面幅を計算して左ペインに設定したい

お手伝いありがとうございます

4

3 に答える 3

3

この答えを見つけてくれてありがとう、それは私と一緒に働きます:

    int width;
    int height;
    if (android.os.Build.VERSION.SDK_INT >= 13){
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        width = size.x;
        height = size.y;
    }else {
        Display display = getWindowManager().getDefaultDisplay(); 
        width = display.getWidth();  // deprecated
        height = display.getHeight();  // deprecated
    }
    if(width>0&&height>0){
        LinearLayout layout = (LinearLayout)findViewById(R.id.menu);
        // Gets the layout params that will allow you to resize the layout
        LayoutParams params = layout.getLayoutParams();
        // Changes the height and width to the specified *pixels*
        params.height = height;
        params.width = width*3/4;
    }
于 2013-07-10T14:10:58.423 に答える
3

スライド ペインのドキュメントを参照するだけで、リニア レイアウトのように機能し、

layout_weight

親ビューグループが match_parent であるため、パーセンテージ ベースの幅を設定するパラメーター

3/4 = 75% の場合

android:layout_weight="0.75"

Android ドキュメントhttp://developer.android.com/reference/android/support/v4/widget/SlidingPaneLayout.htmlから:

LinearLayout と同様に、SlidingPaneLayout は、子ビューでのレイアウト パラメーター layout_weight の使用をサポートして、測定の完了後に残りのスペースを分割する方法を決定します。幅にのみ関連します。ビューが重なっていない場合、重みは LinearLayout の場合と同様に動作します。

ビューがオーバーラップする場合、スライド可能なペインの重みは、閉じた状態で使用可能なすべてのスペースを埋めるようにペインのサイズを調整する必要があることを示しています。覆われたペインの重量は、ユーザーがスライド可能なビューをつかんで閉じた状態に戻すために使用できる小さな最小ストリップを除いて、使用可能なすべてのスペースを埋めるようにペインのサイズを設定する必要があることを示します。

そして LinearLayout ドキュメントからhttp://developer.android.com/guide/topics/ui/layout/linear.html#Weight

注: ビュー グループは実際に重みを使用して子をレイアウトするため、layout_width パラメーターを 0dp に設定することになります。

于 2013-07-10T13:41:12.230 に答える
1

正しい Selecsosi の回答とは別に、2 番目の項目を常にペインとして表示するために私が書いたこのビューもあります (デフォルトの show-side-by-side-if-the-fit 動作を無視します)。名前が示すように、スライド ビューをラップすることができます。

多くの @dimen リソースを使用してそれに基づいて切り替えるswXXXdp-(port|land)か、実行時にスライド ビューの幅を設定するだけで、目的の動作を実装できます (デフォルト レイアウトでも同様に実行できると確信しています)。

于 2013-07-10T13:44:32.173 に答える