2012-06-28 29 views
0

在我的應用程序中,我想在左側有滑動菜單,就像facebook一樣。如何在不更改內部組件佈局的情況下將父級佈局移至正確位置?

在我的previous question我曾經對此提出過關注,並感謝this answer,我可以找到一種方法,使用this library將我的佈局向右滑動。但是,我發現,圖書館實際上並沒有滑動佈局,而只是截取屏幕截圖並向右滑動圖像,因爲佈局上的組件不可點擊。我需要這些組件可點擊。所以,我嘗試了一種新的方法來實現這一點,通過在左側放置滑動菜單,將其默認可見性保持爲View.GONE,並使其顯示在左上角的「顯示/隱藏菜單」按鈕上,如下圖所示。

佈局前:

Layout before clicking Show/hide menu button

現在,當我點擊 「顯示/隱藏菜單」 按鈕,佈局東西喜歡 -

佈局後:

Layout after clicking Show/Hide Menu Button

正如你所看到的,右側的佈局縮小了,所以即使「其他視圖」按鈕也會改變它的寬度我已將android:minWidth屬性設置爲右側的那兩個按鈕以及其父母RelativeLayout

所以我的問題是,有什麼方法可以將佈局向右移動,而不會改變內部組件的寬度/佈局?因此,在任何可用於我的觀點的區域中,都會填充該區域中可填寫內容的任何部分。

+0

我也面臨同樣的問題..你有任何解決方案嗎? – alchemist

+0

還沒有。解決方案並不那麼簡單,否則編寫這些庫的人就已經實現了。我個人覺得它是不可能的,因爲我們不使用webview,否則,它是可能的。 肯定會發布答案,如果我找到一些。 – Rajkiran

+0

我試圖解決它..它現在適用於我。將其作爲可能的解決方案發布。 – alchemist

回答

1

此問題可以解決這樣的:

  • 創建的FrameLayout裏面:第一左菜單的三個鍵和第二佈局,它包含另外兩個按鈕(顯示/隱藏和其它圖)。這樣,第二個佈局在菜單前面(因爲它是fill_parent)。

  • onClick on show/hide button執行翻譯動畫:假設您的菜單寬度爲200px,請將第二個佈局向右移動200。

  • 在onAnimationEnd中,將邊距設置爲第二個佈局,如下所示:secondLayoutLayoutParams.setMargins(200,0,-200,0);

關閉菜單是相似的:由200移動第二個佈局到左,請將所有的邊距爲0

通過設置頁邊距,你會避免按鈕萎縮。

希望它可以幫助

+0

謝謝。有效。雖然我**不使用** FrameLayout,我只是在運行時將邊距設置爲正確的佈局。 – Rajkiran

1

@Rajkiran - 我有一個根佈局,包含我左向右&佈局。

我的右佈局layout_height設置爲「match_parent」 & layout_widht也被設置爲「match_parent」

現在,當我離開滑動面板出現在按鈕的點擊,重置我的右佈局的寬度&高度以編程方式匹配寬度&根部佈局的高度

這樣可以完美地將右側佈局向右移動,而不會內部組件纏繞。

要改變高度&寬度編程我用這個 -

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

       rightLayout.setLayoutParams(rootLayoutParams); 

希望它可以幫助你。

+0

您給出的答案不是將佈局向右移動,而是通過左側佈局。你可以請張貼的XML? – Rajkiran