0

私のアプリケーションでは、Facebookのように左側にスライドメニューを配置したいと思います。

以前の質問で、同じことについて懸念を表明しました。この回答のおかげで、このライブラリを使用してレイアウトを右にスライドさせる方法を見つけることができました。しかし、ライブラリは実際にはレイアウトをスライドさせず、代わりにスクリーンショットを取り、レイアウト上のコンポーネントをクリックできないため、画像を右にスライドさせるだけであることがわかりました。そして、それらのコンポーネントはクリック可能である必要があります。View.GONEそこで、下の図に示すように、デフォルトの表示を維持してスライドアウトメニューを左側に配置し、左上隅の[メニューの表示/非表示]ボタンをクリックすると表示されるようにすることで、これを実現する新しい方法を試しました。

前のレイアウト:

[メニューの表示/非表示]ボタンをクリックする前のレイアウト

「メニューの表示/非表示」ボタンをクリックすると、レイアウトは次のようになります-

後のレイアウト:

[メニューの表示/非表示]ボタンをクリックした後のレイアウト

ご覧のとおり、右側のレイアウトが縮小しているため、右側のandroid:minWidth2つのボタンとその親に属性を設定しても、[他のビュー]ボタンの幅が変わりますRelativeLayout

だから私の質問は、内部コンポーネントが幅/レイアウトを変更せずにレイアウトを右にシフトする方法はありますか?したがって、私のビューで使用できる領域が何であれ、その領域に入力できるコンテンツの任意の部分で埋められます。

4

2 に答える 2

1

この問題は次のように解決できます。

  • 内部でフレームレイアウトを作成します。最初の左側のメニューには3つのボタンがあり、2番目のレイアウトには他の2つのボタン(表示/非表示およびその他のビュー)が含まれています。このように、2番目のレイアウトはメニューの前にあります(fill_parentであるため)。

  • 表示/非表示ボタンのonClickで、翻訳アニメーションを実行します。メニューの幅が200ピクセルであると仮定して、2番目のレイアウトを200だけ右に移動します。

  • onAnimationEndで、次のようにマージンを2番目のレイアウトに設定します。secondLayoutLayoutParams.setMargins(200、0、-200、0);

終了メニューも同様です。2番目のレイアウトを200だけ左に移動し、すべての余白を0に設定します。

マージンを設定することにより、ボタンの縮小を回避できます。

それが役に立てば幸い

于 2012-07-02T12:26:04.157 に答える
1

@Rajkiran-左右のレイアウトを含むルートレイアウトがあります。

私の正しいレイアウトでは、layout_heightが「match_parent」に設定されており、layout_widhtも「match_parent」に設定されています

ボタンをクリックすると左側のスライドパネルが表示されたら、右側のレイアウトの幅と高さをプログラムでリセットして、ルートレイアウトの幅と高さに一致させます

これにより、内部コンポーネントがラップアップすることなく、右側のレイアウトが完全に右側にシフトします。

プログラムで高さと幅を変更するために、これを使用しました-

                rootLayoutParams = new LayoutParams(rootLayout.getWidth(), rootLayout.getHeight());

                rightLayout.setLayoutParams(rootLayoutParams);

それがあなたにも役立つことを願っています。

于 2012-07-03T04:31:23.427 に答える