it-swarm.com.ru

Как добавить нижнее меню в активность Android

Я пытаюсь добавить еще одну панель действий или меню в нижней части моего макета активности и сохранить верхнюю панель действий.

Что-то вроде этого :

 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, который выглядит почти как панель действий, но панель инструментов идет вверх и все портит.

12
Stranger B.

Создание настраиваемой нижней панели инструментов

Я уже создал простое приложение, которое должно показать вам, как начать

Создание пользовательской 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>

Как вы можете видеть, мой родитель ViewGroup - RelativeLayout, что позволяет мне просто создать вид внизу экрана. 

Обратите внимание, что я установил отступ макета на ноль (я думаю: установка поля макета на ноль здесь не обязательна, тот же эффект). Если вы измените его, панель инструментов не будет использовать полную ширину и не будет прилипать к нижней части экрана.

Затем я добавил линейный макет с жестко заданной высотой:

          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">

чтобы клавиатура устройства не скрывала мою пользовательскую нижнюю панель инструментов.

Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать. Я бы ответил на них как можно быстрее.

Надеюсь, это поможет

16
piotrek1543

Насколько я знаю, нет возможности полностью переместить ActionBar вниз. Но все же возможно отобразить несколько элементов внизу. для этого вам нужно сделать это:

  • Просто добавьте Android:uiOptions="splitActionBarWhenNarrow" к своему тегу activity в AndroidManifest.xml, как это ...

    <activity Android:name=".MainActivity" Android:uiOptions="splitActionBarWhenNarrow">

Вы можете прочитать больше здесь и здесь

Надеюсь, поможет. :)

4
Amit Desale

Я сделал пользовательскую нижнюю панель с точной высотой? Attr/actionBarSize и `layout_alignParentBottom =" true ", чтобы поместить ее в нижнюю часть.

<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>`

Теперь зайдите в Manifest.xml и в свой тег активности положите 

Android:windowSoftInputMode="adjustResize"

Это изменит размер раскладки при открытии клавиатуры.

2
Jony

Это разделенная панель действий. Он доступен для мобильных устройств с шириной экрана 400dp. <Чтобы включить разделенную панель действий, просто добавьте uiOptions = "splitActionBarWhenNarrow" в свой элемент или манифест.

Правка: второе изображение действительно не разделить панель действий. Это просто кнопки с атрибутом buttonBarButtonStyle. Посмотрите на это здесь.

0
Er. Rakesh Prajapat

Вы можете просто добавить панель инструментов и установить ее в нижней части и просто можете создать свой собственный макет.

 <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> 
0
user2523529