android – 滚动文本上方的按钮,按钮固定在底部

我在 Android应用程序中难以获得我想要的GUI布局结果.

简要描述我想要的:

GUI包含两个TextView和四个按钮.

四个按钮将水平布置,全部在同一行中,并固定在屏幕的右下角.

两个TextView中的第一个是从屏幕顶部开始,文本内容从一行到数十行不同,而不会滚动屏幕.因此,有时需要滚动以查看所有内容.即使需要滚动,按钮也不会参与滚动:它们始终保持固定在屏幕右下角的一行中.当需要滚动时,滚动文本始终位于按钮之上 – 按钮不覆盖文本.

两个TextView中的第二个将立即显示在第一个TextView的下方,通常只能在文本的总长度上添加一行或两行.当需要滚动时,第二个TextView将与第一个TextView一起滚动,始终显示在第一个TextView的正下方.

其他约束包括:我希望布局在所有以下Android设备上看起来都不错,包括垂直和水平屏幕布局:

> Android 1.5 API3 QVGA MDPI(320×240)设备
> Android 1.5 API3 HVGA MDPI设备
> Android 1.6 API4 QVGA LDPI设备
> Android 2.3 API10 WVGA800设备
>所有与上述设备之间的屏幕

我会再担心平板电脑(如明天).

我已经尝试了很多不同的布局组合,但没有任何事情已经非常接近目标.

(有了我尝试的一些布局组合,我可以用RelativeLayout修复屏幕左下角的按钮,但是我尝试使用scolling文本的所有东西总是导致按钮后面的文本滚动 – 按钮覆盖文本.我没有想到让按钮与右下角对齐.)

如果有人帮我解决这个问题,下面的布局示例xml是一个会话开始点,但是肯定无法实现目标结果,如下面的屏幕截图所示,使用相同的布局示例xml生成. (虽然一些屏幕截图显示同样的问题,但是它们可以帮助我显示不同屏幕的位置.)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Text View 1.  Text varies from a few lines to many more lines than what fits on the screen.  Scrolling is necessary to see it all." />
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Text View 2.  Short text entry sits below Text View 1." />
        </LinearLayout>
    </ScrollView>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/button_1"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 1" />
        <Button
            android:id="@+id/button_2"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 2" />
        <Button
            android:id="@+id/button_3"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 3" />
        <Button
            android:id="@+id/button_4"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 4" />
    </LinearLayout>
</LinearLayout>

1.5_API3_HVGA_Horizo​​ntal_MDPI – short_text:

问题:按钮应与屏幕右下方对齐.

1.5_API3_HVGA_Vertical_MDPI – short_text:

问题:按钮应与屏幕右下方对齐.

1.5_API3_QVGA_240x320_MDPI – short_text:

问题:第四个按钮被砸了.首选三个按钮的文字需要包装,留下足够的空间显示第4个按钮.

1.5_API3_QVGA_320x240_MDPI – short_text:

问题:按钮应与屏幕右下方对齐.

1.6_API4_QVGA_Horizo​​ntal_LDPI – long_text:

问题:当文本几乎填满屏幕时,该行的按钮被破坏.按钮的一行不应该被砸碎,应该被固定在屏幕的右下方.文本应该滚动按钮上方.

1.6_API4_QVGA_Horizo​​ntal_LDPI – short_text:

问题:按钮应与屏幕右下方对齐.

1.6_API4_QVGA_Horizo​​ntal_LDPI – very_long_text,scrollbar在顶部:

问题:按钮不在屏幕上.它们应该固定在屏幕的右下角.

1.6_API4_QVGA_Horizo​​ntal_LDPI – very_long_text,底部的滚动条:

问题:按钮无法找到,尽管文本滚动条位于底部.它们应该固定在屏幕的右下角.

1.6_API4_QVGA_Vertical_LDPI – short_text:

问题:按钮应与屏幕右下方对齐.

任何建议?

附加信息:当我尝试使用RelativeLayout,并修复屏幕底部的按钮与android:layout_alignParentBottom =“true”,那么我的问题是,我不知道如何修复滚动视图的底部与按钮顶部.使用android:layout_alignBottom =“@ id / buttons”只是将滚动视图的底部与按钮的底部对齐,但是这些按钮覆盖文本,如下所示:

更新:将按钮固定到右下方的问题,按钮上方的滚动文本已解决.

这是改变的布局XML,到目前为止(粘贴更多的文本到文本视图1,如果你想看到滚动):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Text View 1.  Text varies from a few lines to many more lines than what fits on the screen.  Scrolling is necessary to see it all." />
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Text View 2.  Short text entry sits below Text View 1." />
        </LinearLayout>
    </ScrollView>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right">
        <Button
            android:id="@+id/button_1"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 1" />
        <Button
            android:id="@+id/button_2"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 2" />
        <Button
            android:id="@+id/button_3"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 3" />
        <Button
            android:id="@+id/button_4"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:text="Button 4" />
    </LinearLayout>
</LinearLayout>

我有一个剩下的问题,我会发布一个新的问题.

解决方法

将ScrollView的layout_height设置为0dp,并将其layout_weight设置为1.这应该将按钮按到屏幕的底部,但不再进一步.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...