Android - 线性布局内的活动

时间:2013-10-21 10:13:26

标签: android android-layout

我正在创建一个带有WebView的应用程序和页面顶部的隐形菜单(只有在屏幕上双击时才会显示)。该菜单是一个简单的线性布局,里面有按钮。每个按钮将启动一个不同的活动,我想这样做,所以菜单将适用于所有活动。 我正在考虑创建一个主要布局,它由顶部和屏幕其余部分的(隐形)菜单组成,它可以为其他活动提供空间。我希望每个活动都有自己的布局。 也许我可以用顶部的菜单创建那个布局,剩下的空间就是线性布局。然后我会在线性布局中调用每个活动。 这是可能的,如果是的话,该怎么办? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

据我了解你可以这样做:

1-创建一个类,它为菜单扩展了LinearLayout。
2-创建一个类扩展活动,并在其中创建菜单视图
3-所有其他活动应扩展您在步骤2中创建的活动。
4-在开始的所有其他活动中,您应该将菜单视图添加到屏幕上

但我强烈建议你使用导航抽屉。

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

答案 1 :(得分:0)

如果您想支持旧版Android(即避免片段),可以使用<include>为每个活动添加菜单布局。您需要在每个活动的onCreate中挂钩click事件,尽管您可以将此代码封装在另一个类中。

答案 2 :(得分:0)

您可以通过创建一个Activity来实现此目标,其中您的隐藏布局位于顶部,FrameLayout作为Fragments的容器:

<强> MainActivit.java

public class MainActivity(){

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

activity_main.xml

 <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()

相关问题