1

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

4

3 回答 3

1

据我了解,您可以这样做:

1-为菜单创建一个扩展 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

于 2013-10-21T10:21:09.397 回答
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()and FragmentTransaction.replace()

于 2013-10-21T10:33:02.927 回答
0

如果您想支持旧版本的 Android(即避免使用 Fragment),您可以使用 an<include>将菜单布局添加到每个 Activity。尽管您可以将此代码封装在另一个类中,但您需要在每个活动的 onCreate 中连接单击事件。

于 2013-10-21T10:25:43.203 回答