如何向Android活动添加底部菜单

时间:2015-12-16 12:05:46

标签: android android-layout menu android-actionbar

我尝试在活动布局的底部添加另一个操作栏或菜单,并保留顶部操作栏。

这样的事情:

My Layout

这是我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.yasser.version6.PublierActivity">


<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar" />



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


    <LinearLayout
        android:layout_width="fill_parent"
        android:id="@+id/user"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">


        <ImageView
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:layout_margin="4dp"
            android:id="@+id/profil_image"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="218dp"
            android:layout_marginEnd="218dp" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine|textCapSentences"
            android:ems="10"
            android:background="#00000000"
            android:layout_margin="4dp"
            android:hint="Écriver quelque chose..."
            android:id="@+id/publication_text"
            android:maxLength="150"
            android:textSize="15dp"
            android:maxLines="3"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">
            <requestFocus />
        </EditText>


    </LinearLayout>




    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="@dimen/image_size"
        android:id="@+id/publication_image"
        android:layout_weight="1"
        android:padding="0dp"
        android:background="@drawable/default_image"
        android:layout_marginTop="5dp"
        android:scaleType="fitXY"
        android:layout_below="@+id/user" />

</RelativeLayout>

我尝试添加一个自定义RelativeLayout,它看起来几乎就像一个操作栏,但工具栏上升并弄乱了所有内容。

5 个答案:

答案 0 :(得分:16)

创建自定义底部工具栏

我已经创建了一个简单的应用程序,它应该向您展示如何开始

创建自定义ViewGroup

这是我的activity_main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp"
    tools:context="com.example.piotr.myapplication.MainActivity">

    <LinearLayout
        android:id="@+id/show_pdf"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@color/primary_material_light"
        android:orientation="horizontal">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_cut_mtrl_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_copy_mtrl_am_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_selectall_mtrl_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_share_mtrl_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_selectall_mtrl_alpha"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_menu_moreoverflow_mtrl_alpha"/>
    </LinearLayout>

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="75dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"/>
</RelativeLayout>

正如您所见,我的父ViewGroupRelativeLayout,这只是让我在屏幕底部创建一个视图。

请注意,我将布局填充设置为零(我认为:此处将布局边距设置为零,效果相同)。如果您更改它,工具栏将不会使用全宽,并且不会坚持使用屏幕底部。

然后我添加了一个带有硬编码高度的线性布局:

          android:layout_height="40dp"

我想要它,我的底部工具栏将采用完整的可用宽度,因此我将其设置为match_parent

接下来,我添加了一些ImageButton次视图,其中包含来自Android库的图片。

你有两种可能性:

  • 如果你真的想拥有一个像上面例子那样的工具栏,只需在每个ImageButton视图中删除这一行:

          android:layout_weight="1"
    

删除重量和一些按钮后,您将获得与预期非常相似的视图:

  • 如果您想获取整个宽度,并在项目weight中使用相同大小的每个按钮,就像在我的示例中一样。

现在让我们转到 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.piotr.myapplication"
          xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:windowSoftInputMode="stateVisible|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

在该文件中我添加了,因为您只能看到另外一行:

         android:windowSoftInputMode="stateVisible|adjustResize">

确保设备键盘不会隐藏我的自定义底部工具栏。

如果您有任何疑问,请随意提问。我会尽快回答。

希望有所帮助

答案 1 :(得分:4)

据我所知,没有办法将x = A\b完全移到底部。但仍然可以在底部显示几个项目。为此你需要这样做:

  • 只需将ActionBar添加到android:uiOptions="splitActionBarWhenNarrow"中的activity标记,就像这样......

    AndroidManifest.xml

您可以阅读更多herehere

希望它有所帮助。 :)

答案 2 :(得分:2)

我制作了一个自定义底栏,其精确高度为?attr / actionBarSize,而'layout_alignParentBottom =“true”将其置于底部。

ipc_codes_new

现在转到Manifest.xml并在你的活动标签中输入

<LinearLayout
    android:id="@+id/bottombar"
    android:layout_width="fill_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentBottom="true"
    android:background="#FFFFFF"
    android:weightSum="30"
    android:orientation="horizontal">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_gravity="center"
        android:background="@android:color/transparent"
        android:src="@drawable/iconcamera"/>
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_gravity="center"
        android:background="@android:color/transparent"
        android:src="@drawable/shape"/>
</LinearLayout>`

这将调整键盘打开时的布局。

答案 3 :(得分:0)

这是一个拆分操作栏。它适用于屏幕宽度为400dp <1的手机设备。要启用拆分操作栏,只需将uiOptions =“splitActionBarWhenNarrow”添加到您的或清单元素。

编辑:第二张图片确实不是分割操作栏。这些只是buttonBarButtonStyle属性的按钮。请看这里。

答案 4 :(得分:0)

您只需添加工具栏并将其设置为底部,就可以创建自己的自定义布局。

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
        android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
        android:background="#333333" app:popupTheme="@style/AppTheme.PopupOverlay"
        android:layout_alignParentBottom="true"

        >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="left">

            <Button
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:background="@drawable/folder"
                android:id="@+id/pdfViewer"/>

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="center"
            >
            <Button
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:background="@drawable/cameranew"
                android:id="@+id/btn"
                />
        </LinearLayout>
       </android.support.v7.widget.Toolbar>