2013-10-21 100 views
1

我使用WebView和頁面頂部的不可見菜單創建了一個應用程序(僅在雙擊屏幕時出現)。該菜單是一個簡單的線性佈局,裏面有按鈕。每個按鈕都會啓動一個不同的活動,我想這樣做,這樣菜單就可以在所有活動中使用。 我正在考慮創建一個主要的佈局,這個佈局將包含頂部和其他屏幕上的(不可見)菜單,它將爲其他活動提供空間。我希望每個活動都有自己的佈局。 也許我可以用頂部的菜單創建該佈局,其餘的空間將是線性佈局。然後我會調用該線性佈局中的每個活動。 這是可能的,如果是這樣,怎麼做? 任何幫助將不勝感激。Android - 線性佈局內的活動

+0

在我看來,更好的解決方案是在一個主要活動中創建這個不可見的菜單,並根據按下的按鈕添加/替換碎片。這樣,你看不見的菜單將只在一個活動中繪製,並且所有的片段都會有它自己的自定義佈局。 – hardartcore

+0

所有活動contentView的佈局relativeLayout或FrameLayout?如果不是,則必須使用relativeLayout或framelayout。 – nurisezgin

+0

你可以使用片段來做到這一點..創建一個片段的不可見菜單和主佈局的另一個片段...更多信息請參閱http://developer.android.com/guide/components/fragments.html –

回答

0

您可以通過創建一個Activity它在頂部有你看不見的佈局和FrameLayout集裝箱您Fragments實現這一目標

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/invisible_menu" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" > 

     <!-- your other views here --> 

    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/invisible_menu" /> 

</RelativeLayout> 

這就是MainActivity,它可以容納你所有的Fragments。對於您的應用程序中使用Fragments你應該檢查Android Developers - Fragments

編輯:這裏是你如何添加/通過代碼替換Fragments

要添加首Fragment只需撥打:

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

ExampleFragment fragment = new ExampleFragment(); 
transaction.add(R.id.fragment_container, fragment); 
transaction.commit(); 

// Commit the transaction 
transaction.commit(); 

而且之後,用另一個Fragment替換內容,則應在onClick中執行類似操作:

// Create new fragment and transaction 
Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 

所以基本上你應該使用FragmentTransaction.add()FragmentTransaction.replace()

+0

你可以給我一個關於如何在MainActivity的OnCreate內啓動一個WebView片段的例子嗎?謝謝 – Izak

+0

創建一個片段並添加一個WebView作爲它的內容。這與Activity – hardartcore

+0

中的操作幾乎一樣。我創建了一個片段類並插入了代碼,然後將該片段添加到activity_main.xml中的FrameLayout中。它工作正常,但我怎麼能從MainActivity而不是從xml文件調用它?或者至少我怎麼會按下按鈕時調用另一個片段? – Izak

1

據我瞭解,你可以那樣做:

1-創造出extneds LinearLayout中的菜單類。
2 - 創建一個類擴展活動,它內部創造
3-所有其他活動應擴展了活動,您在步驟2中
4-在onStart你應該添加菜單視圖所有其他活動中創建的菜單視圖屏幕

但我強烈建議您使用導航抽屜。

http://developer.android.com/design/patterns/navigation-drawer.html
http://developer.android.com/training/implementing-navigation/nav-drawer.html

0

如果你想支持舊版本的Android(即,避免片段),您可以使用<include>的菜單佈局添加到每個活動。您需要在每個活動的onCreate中連接點擊事件,不過您可以將此代碼封裝到另一個類中。

MainActivit.java

public class MainActivity(){ 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main) 
    } 
} 

activity_main.xml中