草庐IT

Android 全屏布局,下方有额外的布局,可滚动

coder 2024-07-02 原文

我有一个显示一些图像和文本的布局,按钮位于底部。

按下按钮时,我需要在按钮下方显示一些新信息。

因此初始内容需要保持在相同的高度(设备屏幕的高度),并且需要在其下方添加新内容,允许用户向下滚动。

当按下按钮时,理想情况下需要像页面 anchor 一样显示新内容,但我遇到困难的部分是让初始内容全屏显示,并在添加新内容时保持该大小,同时使整个内容可滚动。

我一直在尝试不同的布局、不同的高度参数、android:fillViewport="true"或不等。

如有必要,我可以提供一些 XML/进一步的解释。但我不确定我想要实现的目标是否可行。至少我想要一个可滚动的整体 View ,顶部布局为全屏,而用户可以滚动到下面的一些布局。

图片:

最佳答案

试试这个:

  1. 制作 ScrollView 容器并将您的布局 #1 添加到其中

  2. 根据每个屏幕高度将布局 #1 的高度设置到代码中

  3. 点击按钮后将布局 #2 添加到 ScrollView

更新: 好的,我只能建议你这个解决方案(它在模拟器中对我有用)。 XML:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <LinearLayout
        android:id="@+id/container" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout 
            android:id="@+id/layout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ff0000">

            <Button 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button"
                android:onClick="btnClick"/>

        </RelativeLayout>

    </LinearLayout>

</ScrollView>

代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void btnClick(View v){
        LinearLayout container = (LinearLayout)findViewById(R.id.container);
        ScrollView scroll = (ScrollView)findViewById(R.id.scroll);
        RelativeLayout layout1 = (RelativeLayout)findViewById(R.id.layout1);

        RelativeLayout layout2 = new RelativeLayout(this);
        LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, 300);
        layout2.setBackgroundColor(Color.YELLOW);

        layout1.getLayoutParams().height = scroll.getHeight();
        scroll.setFillViewport(false);
        container.addView(layout2, params);
    }

}

关于Android 全屏布局,下方有额外的布局,可滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362785/

有关Android 全屏布局,下方有额外的布局,可滚动的更多相关文章

  1. ruby - nanoc 和多种布局 - 2

    是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby-on-rails - Ruby 中意外的大小写行为 - 2

    我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。

  4. ruby - 在 Ruby 中跳过额外的关键字参数 - 2

    我定义了一个方法:defmethod(one:1,two:2)[one,two]end当我这样调用它时:methodone:'one',three:'three'我得到:ArgumentError:unknownkeyword:three我不想从散列中一个一个地提取所需的键或排除额外的键。除了像这样定义方法之外,有没有办法规避这种行为:defmethod(one:1,two:2,**other)[one,two,other]end 最佳答案 如果不想写**other中的other,可以省略。defmethod(one:1,two:2

  5. ruby-on-rails - 如何添加具有额外列的多对多记录 - 2

    我有以下模型用户has_many:users_contactshas_many:contacts,through::users_contactsaccepts_nested_attributes_for:contacts,allow_destroy:true联系方式has_many:users_contactshas_many:users,through::users_contactsaccepts_nested_attributes_for:users_contacts,allow_destroy:true用户联系belongs_to:usersbelongs_to:contacts

  6. ruby-on-rails - 带有自定义 rails 表单生成器的额外字段 - 2

    我有一个自定义表单生成器,使用此自定义生成器的原因之一是对于每个表单,我都需要包含一些额外的参数,我不想在每个表单中使用隐藏字段标签显式放入这些参数写。for_for(@foo,:builder=>MyBuilder)do|f|#stuffIshouldn'thavetoworryabout#thisshouldbeputinallthetimewithoutmehavingtodoithidden_field_tag('extra','myextrainfo')#normalthingsIwouldputinf.text_field(:bar)end我必须在我的自定义表单构建器中做什

  7. ruby-on-rails - If 语句中额外的 Ruby 行会导致 Haml 出现问题吗? - 2

    我试图在我的一个HamlView中的If/Else语句中放置一些(未呈现的)注释,但它似乎会导致问题。我想要以下代码:-#Stufflike______activatestheifstatement-if@condition(Somecode)-#Stufflike_____activatestheelsestatement-else(Someothercode)不幸的是,Rails向我抛出这个错误:Got"else"withnopreceding"if"如果我删除“其他”注释,即-#Stufflike______activatestheifstatement-if@condition

  8. ruby-on-rails - 我可以在没有 Controller 的情况下直接从 routes.rb 渲染布局吗? - 2

    我想为网站的管理和公共(public)部分设置一对样式指南。每个都需要自己的布局,其中包含静态html和调用erbpartials的混合(因此静态页面不会削减它)。我不需要Controller来为这些页面提供服务,而且我不希望有效的仅开发内容使其余代码困惑。这让我想知道是否有一种方法可以直接呈现布局。免责声明:我明白这不是我应该经常/永远做的事情,而且我知道有很多争论可以解释为什么这是一个坏主意。我对这是否可能感兴趣。有没有办法让我直接从routes.rb渲染布局而不通过Controller? 最佳答案 出于某种奇怪的原因,我想暂时

  9. ruby-on-rails - 设计 Controller 如何改变布局? - 2

    这个问题在这里已经有了答案:differentlayoutforsign_inactionindevise(8个答案)关闭7年前。如何更改设计Controller中的布局?

  10. ruby - 访问类外的常量 - 2

    当我想访问类Test中的常量CONST时classTestCONST=7end在课外,我必须这样做:putsTest::CONST为什么在执行此操作时会出现错误?putsobj::CONST如果obj是Test类的一个对象,为什么我尝试通过该对象访问常量时会出错? 最佳答案 因为实例对象和类对象不是一回事。命名空间存在于类对象上,不存在于实例上。但是,您可以向实例询问它的类,然后深入研究它。putsobj.class::CONST 关于ruby-访问类外的常量,我们在StackOverf

随机推荐