it-swarm.com.ru

Положить кнопки в нижней части экрана с LinearLayout?

У меня есть следующий код, как мне сделать так, чтобы 3 кнопки были внизу?

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="60dp"
        Android:gravity="center"
        Android:text="@string/observer"
        Android:textAppearance="?android:attr/textAppearanceLarge"
        tools:context=".asdf"
        Android:weight="1" />

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical" >

        <Button
            Android:id="@+id/button1"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="1" />

        <Button
            Android:id="@+id/button2"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="2" />

        <Button
            Android:id="@+id/button3"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="3" />
    </LinearLayout>

116
thedeepfield

Вам необходимо обеспечить четыре вещи:

  • Ваш внешний LinearLayout имеет layout_height="match_parent"
  • Ваша внутренняя LinearLayout имеет layout_weight="1" и layout_height="0dp"
  • Ваш TextView имеет layout_weight="0"
  • Вы правильно установили гравитацию на своем внутреннем LinearLayout: Android:gravity="center|bottom"

Обратите внимание, что fill_parent не означает «занять все доступное пространство». Однако, если вы используете layout_height="0dp" с layout_weight="1", то представление займет все доступное пространство ( Невозможно получить правильный макет с помощью "fill_parent" ).

Вот некоторый код, который я быстро написал, который использует два LinearLayouts аналогично вашему коду.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/db1_root"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:text="@string/cow"
        Android:layout_weight="0"
        Android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dip"
        Android:layout_weight="1"
        Android:gravity="center|bottom"
        Android:orientation="vertical" >

        <Button
            Android:id="@+id/button1"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="1" />

        <Button
            Android:id="@+id/button2"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="2" />

        <Button
            Android:id="@+id/button3"
            style="?android:attr/buttonStyleSmall"
            Android:layout_width="145dp"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal|center"
            Android:text="3" />
    </LinearLayout>

</LinearLayout>

Результат выглядит примерно так:

enter image description here

218
Brian Attwell

Вы можете использовать RelativeLayout и выровнять его по дну с помощью Android:layout_alignParentBottom="true"

19
Ahmad

Создайте относительный макет и внутри этого макета создайте кнопку с этой линией

Android:layout_alignParentBottom="true"
10
varghesekutty

сначала создайте имя файла как footer.xml поместите этот код внутри него. 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="78dp"
    Android:layout_gravity="bottom"
    Android:gravity="bottom"
 Android:layout_weight=".15"
    Android:orientation="horizontal"
    Android:background="@drawable/actionbar_dark_background_tile" >
    <ImageView
        Android:id="@+id/lborder"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/overlay" />
    <ImageView
        Android:id="@+id/unknown"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/notcolor" />
    <ImageView
        Android:id="@+id/open"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/openit"
        />
    <ImageView
        Android:id="@+id/color"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/colored" />
        <ImageView
        Android:id="@+id/rborder"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/frames"
        Android:layout_weight=".14" />


</LinearLayout>  

затем создайте header.xml и поместите в него этот код .:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="@dimen/action_bar_height"
    Android:layout_gravity="top"
    Android:baselineAligned="true"
    Android:orientation="horizontal"
    Android:background="@drawable/actionbar_dark_background_tile" >
    <ImageView
        Android:id="@+id/contact"
        Android:layout_width="37dp"
        Android:layout_height="wrap_content"
        Android:layout_gravity="start"
        Android:layout_weight=".18"
        Android:scaleType="fitCenter"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/logo"/>

    <ImageView
        Android:id="@+id/share"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_gravity="start"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/share" />

    <ImageView
        Android:id="@+id/save"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/save" />

    <ImageView
        Android:id="@+id/set"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/set" />

    <ImageView
        Android:id="@+id/fix"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/light" />

    <ImageView
        Android:id="@+id/rotate"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/ic_menu_rotate" />

    <ImageView
        Android:id="@+id/stock"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight=".14"
        Android:background="@drawable/action_bar_left_button"
        Android:src="@drawable/stock" />

</LinearLayout>

а затем в вашем main_activity.xml и поместите в него этот код: - 

<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="fill_parent"
tools:context=".MainActivity"
Android:id="@+id/relt"
Android:background="@drawable/background" >

<LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="78dp"
    Android:id="@+id/down"
    Android:layout_alignParentBottom="true" >

    <include
        Android:layout_width="fill_parent"
        Android:layout_height="78dp"
        layout="@layout/footer" >
    </include>
</LinearLayout>
<ImageView
    Android:id="@+id/view"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_above="@+id/down"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentRight="true"
    Android:layout_below="@+id/inc"
   >  
    </ImageView> 
    <include layout="@layout/header"
        Android:id="@+id/inc"
        Android:layout_width="fill_parent"
        Android:layout_height="50dp"></include> 

счастливого кодирования :)

4
k0sh

Вы можете сделать это, взяв макет Frame в качестве родительского макета, а затем поместив линейный макет внутри него. Вот пример:

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
 >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">

<TextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="5dp"
    Android:textSize="16sp"/>


<TextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="5dp"      
    Android:textSize="16sp"
    />

<TextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="5dp"
    Android:textSize="16sp"/>

<TextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="5dp"
     Android:textSize="16sp"/>




</LinearLayout>

<Button
    Android:id="@+id/button2"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="10dp"
    Android:layout_gravity="bottom"
    />
 </FrameLayout>
3
Diya Bhat
<LinearLayout
 Android:id="@+id/LinearLayouts02"
 Android:layout_width="match_parent"
 Android:layout_height="match_parent"
 Android:orientation="vertical"
 Android:gravity="bottom|end">

<TextView
Android:id="@+id/texts1"
Android:layout_height="match_parent"
Android:layout_width="match_parent"
Android:layout_weight="2"
Android:text="@string/forgotpass"
Android:padding="7dp"
Android:gravity="bottom|center_horizontal"
Android:paddingLeft="10dp"
Android:layout_marginBottom="30dp"
Android:bottomLeftRadius="10dp"
Android:bottomRightRadius="50dp"
Android:fontFamily="sans-serif-condensed"
Android:textColor="@color/colorAccent"
Android:textStyle="bold"
Android:textSize="16sp"
Android:topLeftRadius="10dp"
Android:topRightRadius="10dp"/>

</LinearLayout>
2
Syed Danish Haider

Добавьте Android:windowSoftInputMode="adjustPan" к манифесту - к соответствующему действию:

  <activity Android:name="MyActivity"
    ...
    Android:windowSoftInputMode="adjustPan"
    ...
  </activity>
1
oskarko

Просто добавьте layout_weight = "1" в ваш linearLayout, который имеет кнопки. 

Правка: - Позвольте мне сделать это просто

следуйте как показано ниже, имя тега может быть неверным, это просто идея

<LL>// Top Parrent LinearLayout
   <LL1 height="fill_parent" weight="1" "other tags as requirement"> <TV /><Butons /></LL1> // this layout will fill your screen.
   <LL2 height="wrap_content" weight="1"  orientation="Horizontal" "other tags as requirement"> <BT1 /><BT2/ ></LL2> // this layout gonna take lower part of button height of your screen

<LL/> TOP PARENT CLOSED
1
AAnkit

Вы можете связать свои Button (s) в RelativeLayout, даже если ваш Родительский Макет Линейный. Убедитесь, что у самого внешнего родителя атрибута Android: layout_height установлено значение match_parent . И в этот тег Button добавьте 'Android: alignParentBottom = "True"'

0
vidit pandey