如何在屏幕底部对齐这些按钮?

时间:2013-06-06 13:09:56

标签: android

这是我正在研究的用户界面:

enter image description here

我正试图让底部的按钮固定在屏幕的底部,但为了做到这一点,似乎我需要有一个硬编码的高度

<LinearLayout>
    <GridLayout></GridLayout>
    <GridLayout></GridLayout>
</LinearLayout>

我们在图片中看到的是305dip。如果我将其增加到例如335dip它与底部正确对齐,但我知道这不对。但是,如果我将LinearLayout的高度设置为match_parent,例如

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"

它将红色框中的按钮推到屏幕底部。

我需要一种方法让键盘尽可能多地填充空间,并始终将正确的按钮固定在屏幕底部。我怎么能这样做?

这是我的布局定义:

<?xml version="1.0" encoding="utf-8"?>
<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:background="#ffffff"
    tools:context=".FullscreenActivity"
    android:orientation="vertical"
    android:paddingTop="0dip"
    android:paddingBottom="0dip">
    <TextView
        android:id="@+id/keypadOutput"
        android:layout_width="match_parent"
        android:layout_height="70dip"
        android:gravity="center_vertical"
        android:keepScreenOn="true"
        android:text="@string/dummy_content"
        android:textColor="#000000"
        android:textSize="25sp"
        android:textStyle="bold"
        android:background="@drawable/LCD"
        android:paddingLeft="15dip"
        android:layout_margin="5dip" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="305dip"
        android:orientation="horizontal">
        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:columnCount="3"
            android:orientation="horizontal">
            <!-- 12 buttons -->
        </GridLayout>
        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:columnCount="1"
            android:orientation="horizontal">
            <!-- 3 buttons -->
        </GridLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="bottom|center_horizontal"
        android:orientation="horizontal">
        <!-- 3 image buttons -->
    </LinearLayout>
</LinearLayout>

正确答案

根据@ Ascorbin的回答,这是解决方案:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="center_horizontal">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"
        android:layout_alignParentBottom="true">
        <ImageButton
            android:id="@+id/button_keypad"
            android:layout_width="45dip"
            android:layout_height="45dip"
            android:background="@drawable/navigation_button"
            android:src="@drawable/keypad_light" />
        <ImageButton
            android:id="@+id/button_unset"
            android:layout_width="45dip"
            android:layout_height="45dip"
            android:background="@drawable/navigation_button"
            android:src="@drawable/unset_light" />
        <ImageButton
            android:id="@+id/button_logs"
            android:layout_width="45dip"
            android:layout_height="45dip"
            android:background="@drawable/navigation_button"
            android:src="@drawable/logs_light" />
    </LinearLayout>
</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

我建议你改变

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="305dip"
    android:orientation="horizontal">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal">

答案 1 :(得分:0)

你可以随意添加任何你想要的保证金

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="bottom|center_horizontal"
    android:layout_marginTop="50dp"
    android:orientation="horizontal">
    <!-- 3 image buttons -->
</LinearLayout>

答案 2 :(得分:0)

我不认为你通过强硬的布局高度来帮助自己。我建议将整个布局包装在RelativeLayout中,然后使用alighParentBottom="true"将按钮锚定到底部。