0

这是我正在处理的 UI:

在此处输入图像描述

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

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

3 回答 3

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">
于 2013-06-06T13:16:46.217 回答
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>
于 2013-06-06T13:22:04.240 回答
0

我不认为你通过 hardvoding 布局高度来帮自己一个忙。我建议将您的整个布局包装在 a 中RelativeLayout,并将您的按钮锚定到底部alighParentBottom="true"

于 2013-06-06T13:27:59.510 回答