LinearLayout裁剪但不在Scrollview中展开

时间:2014-11-25 15:55:36

标签: android xml scrollview android-linearlayout android-layout-weight

嘿,伙计们,

我一直在这里搜索,但似乎无法找到解决方案。我在LinearLayout内部的ScrollView中使用LinearLayout,LinearLayout - > ScrollView - > LinearLayout中。但是,当我想要它时,它不会扩展,而是裁剪我的布局。

任何人都知道我在这里失踪了什么?可能有点乱,但一直在尝试很多stuf

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <include
            android:id="@+id/image_slider_menu"
            layout="@layout/image_slider"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="3" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="@color/menu"
            android:orientation="horizontal"
            android:gravity="center_vertical">

            <ImageView
                android:id="@+id/bars_map"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="4"
                android:padding="10dp"
                android:src="@drawable/maps" />

            <TextView
                android:id="@+id/report"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="8"
                android:gravity="left|center_vertical"
                android:text="Meld Misbruik"
                android:clickable="true" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="3"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="15dp">

                <TextView
                    android:id="@+id/bar_view_title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="title"
                    android:textSize="22sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/bar_view_description"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="description"
                    android:textSize="14sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/menu"
                android:orientation="vertical"
                android:paddingLeft="15dp"
                android:paddingTop="5dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Contact"
                    android:textSize="22sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/bar_view_contact"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Gegevens" />
            </LinearLayout>
        </LinearLayout>


    </LinearLayout>
</ScrollView>
</LinearLayout>

3 个答案:

答案 0 :(得分:0)

没有错过,这是正确的行为方式,不幸的是......你的LinearLayout应该有没有重量的wrap_content,请检查:ScrollView's Handy Trick

你也可以测量SCrollView和Linear,如果是svHeight&gt; llHeight那么ll.getLayoutParams()。height = sv.height

编辑: 好的,一些方便的代码:

<ScrollView
    android:id="@+id/sv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

代码:

sv.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @SuppressLint("NewApi")
        @Override
        public void onGlobalLayout() {
            if(Build.VERSION.SDK_INT<16)
                sv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//misspell :D
            else
                sv.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            int svHeight=sv.getMesuredHeight();
            if(svHeight>ll.getMeasuredHeight())
                ll.getLayoutParams().height=svHeight;
        }
}

答案 1 :(得分:0)

如果因为设置了固定大小,内容太长,则无法调整LinearLayout的大小。

只需改变:

android:layout_height="0dp"
android:layout_weight="1"

by:

 android:layout_height="wrap_content"

答案 2 :(得分:0)

问题是体重值。我删除了它们,给了一些高度并包装内容,现在它再次滚动....但是这并没有使它响应。

这确实回答了我的问题,但并不需要我想要的东西。然而,即使在不同的分辨率下,布局看起来也足够好,所以我就这样离开了。