这是我正在研究的用户界面:
我正试图让底部的按钮固定在屏幕的底部,但为了做到这一点,似乎我需要有一个硬编码的高度
<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>
答案 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"
将按钮锚定到底部。