Android:如何让LinearLayout的background在整个屏幕中心显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:如何让LinearLayout的background在整个屏幕中心显示相关的知识,希望对你有一定的参考价值。

1、用其他组件代替linearlayout的方式进行,这样布局比较简单些。

如果用linearlayout的画,需要有5个才能居中,步骤如下

1、垂直放置3个linearlayout,中间一个固定高度,上下两个设置layout_weight="1"

2、中间linearlayout水平布局,放置左中右3个linearlayout,中间的设置固定宽度,左右设置layout_weight="1"

代码示例如下

<linearlayout 
android:orientation="vertical" >
    <linearlayout android:orientation="vertical" android:layout_weight="1"/>
    <linearlayout android:orientation="horizontal" 
         android:layout_height="50dp">       
         <linearlayout android:orientation="vertical"  android:layout_weight="1"/>
         <linearlayout android:orientation="vertical" android:layout_width="50dp"/>
         <linearlayout android:orientation="vertical"  android:layout_weight="1"/>
    </linearlayout>
    <linearlayout android:orientation="vertical"  android:layout_weight="1"/>
</linearlayout>

参考技术A 首先background是和LinearLayout是一样大的,你要显示到中间吧LinearLayout剧中就行了

如何防止在 FrameLayouts 中滚动,而是让父 LinearLayout 处理所有滚动?

【中文标题】如何防止在 FrameLayouts 中滚动,而是让父 LinearLayout 处理所有滚动?【英文标题】:How to Prevent Scrolling within FrameLayouts and Instead Have the Parent LinearLayout Handle all Scrolling? 【发布时间】:2015-03-09 15:27:48 【问题描述】:

我有一个可滚动的 LinearLayout 父级,其中嵌套了一些 FrameLayouts,如下所示:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:fillViewport="true"
android:scrollbars="vertical"
android:orientation="vertical">

<FrameLayout
    android:id="@+id/hb_container"
    android:layout_
    android:layout_/>

<FrameLayout
    android:id="@+id/gn_container"
    android:layout_
    android:layout_/>

<FrameLayout
    android:id="@+id/yt_container"
    android:layout_
    android:layout_/>

</LinearLayout>

我希望 FrameLayouts 占用他们需要的空间,允许通过 LinearLayout 滚动整个视图。

问题是:LinearLayout 只会占据屏幕,不会滚动,如果内容溢出屏幕底部,FrameLayout 会滚动。

明确地说,我只想让 FrameLayouts 填充它们需要的任何空间,LinearLayout 可以像一个长视图一样滚动它。我必须修复 FrameLayout 高度来实现这一点吗?如果是这样,我的布局是否存在在不同屏幕尺寸/密度上中断的风险(或者 DP 是否真的在所有情况下都有效?)。

非常感谢您!

编辑:我已经确认在 FrameLayout 中设置固定高度正是我想要做的:滚动为一个。但是,为什么 wrap_content 不测量高度然后从那里开始?这就是我所期望的情况......我不确定如何判断每个元素的正确高度。

【问题讨论】:

【参考方案1】:

尝试在布局中添加滚动视图

 <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_ >

        <LinearLayout
    android:layout_
    android:layout_
    android:fillViewport="true"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/hb_container"
        android:layout_
        android:layout_/>

    <FrameLayout
        android:id="@+id/gn_container"
        android:layout_
        android:layout_/>

    <FrameLayout
        android:id="@+id/yt_container"
        android:layout_
        android:layout_/>

    </LinearLayout>
    </ScrollView>

【讨论】:

试过这个,但不幸的是没有,行为与 ScrollView 的行为相同,就像我上面示例中的父 LinearLayout 一样。我正在尝试根据 Google Play 商店在主屏幕中的功能来模拟它。我敢肯定他们一定是为那些不同的盒子使用了片段……但是整个视图都在滚动。

以上是关于Android:如何让LinearLayout的background在整个屏幕中心显示的主要内容,如果未能解决你的问题,请参考以下文章

android LinearLayout中嵌套一个textview,当textview更新时会触发LinearLayout也更新。用啥办法可以让

Android中如何让控件居中

android 使用Activity类布局时怎样让图片居中

一个水平的LinearLayout中 有2个控件,如何让左边的空间 左对齐 右边的控件右对齐?

android 中如何让控件一直在窗体底部

android页面布局:如何使LinearLayout层占满页面,但不覆盖底部菜单栏?