的RelativeLayout的孩子是不是填充的RelativeLayout的高度(Child of

2019-08-22 19:41发布

我有获取与RelativeLayouts填充一个ListView。 这些RelativeLayouts的内容可以改变,从而分别改变他们的高度。 在每个RelativeLayout的,我有,布局的高度相匹配的布局左侧一个小竖线。

这是一个类似的外观到这一点- > 链接

虽然由于某些原因,我使用的视图对象并没有扩张布局的高度。

我究竟做错了什么?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/post"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/column_post_selector"
android:orientation="horizontal" >

<!-- Status bar (THIS ISN'T FILLING TO PARENTS' HEIGHT) -->
<View
    android:id="@+id/status"
    android:layout_width="3dp"
    android:layout_height="fill_parent"
    android:layout_alignLeft="@id/post"
    android:layout_marginBottom="2dp"
    android:layout_marginTop="2dp"
    android:background="#33B5E5" />

<ImageView
    android:id="@+id/thumbnail"
    android:layout_width="80dip"
    android:layout_height="80dip"
    android:layout_toRightOf="@id/status"
    android:contentDescription="@string/empty"
    android:layout_marginRight="5dp"
    android:scaleType="fitStart" />

<!-- Title -->

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/post"
    android:layout_toRightOf="@id/thumbnail"
    android:textColor="#ffffff"
    android:textSize="14sp"
    android:typeface="sans" />
<!-- Rightend Duration -->

<TextView
    android:id="@+id/date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@id/title"
    android:layout_marginRight="5dip"
    android:gravity="right"
    android:textColor="#10bcc9"
    android:textSize="12sp"
    android:textStyle="bold" />

</RelativeLayout>

Answer 1:

你会希望添加layout_alignParentTop="true"layout_alignParentBottom="true" ,以status -这将确保该视图触及顶部和底部postRelativeLayout



Answer 2:

我有我的细胞内部的类似问题RecyclerView其中有一个RelativeLayout的作为根元素。

一种解决办法我是包装纸根RelativeLayout的元素周围一个额外的LinearLayout。

所以,你卡看起来是这样的:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <RelativeLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
            <View
                android:id="@+id/view_with_same_height_as_parent"
                android:layout_width="10dp"
                android:layout_height="fill_parent"
                android:layout_alignParentBottom="true"
                android:layout_alignParentTop="true"/>
...


    </RelativeLayout>
</LinearLayout>

来源: https://stackoverflow.com/a/28799251/3708094



Answer 3:

如果你的RelativeLayout是滚动型里面,然后在滚动型,你需要把它添加fillViewPort PARAM并设置为true

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


Answer 4:

我有一个类似的问题与RelativeLayout一个内ScrollView 。 根据该文件存在中一个错误 RelativeLayout导致在测量高度的错误如果内部滚动容器(像的ListView)中加入(最多17版本)。

所以要解决,你应该编程计算高度的问题。

你可以让你的扩展类并覆盖onMeasure方法或添加OnGlobalLayoutListener父视图。

我选择了第二种方式。 这里是我的解决方案:

findViewById(R.id.scroll_view).getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        float topElementPosition = findViewById(R.id.top_element).getY();
        float bottomElementPosition = findViewById(R.id.bottom_element).getY();
        int bottomElementHeight = findViewById(R.id.bottom_element).getMeasuredHeight();
        int height = (int)(bottomElementPosition-topElementPosition+bottomElementHeight);
        findViewById(R.id.view).setMinimumHeight(height);
        findViewById(R.id.scroll_view).getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }
});


Answer 5:

有同样讨厌的问题它的方式是没有意义的。 到底是什么工作对我来说是改变android:layout_height在RelativeLayout的标签fill_parent这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
  ...

希望这可以帮助



Answer 6:

余期间固定通过手动设置布局onLayout为无效视图:

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);

    int rootMarginRight = ((MarginLayoutParams)root.getLayoutParams()).rightMargin;
    int paddingRight = root.getPaddingRight() + rootMarginRight;

    //invalid view
    actionsContainer.layout(
            right - actions.getWidth() - paddingRight,
            0,
            right - paddingRight,
            getHeight()
    );
}


Answer 7:

如果你知道你要设置的确切高度,你可以为这个组件(视图)设置高度或了minHeight。 机器人:在你的情况,你可以用设置了minHeight =“76dp”,或者您可以使用的LayoutParams编程设定。 希望能帮助到你!



Answer 8:

我的问题是以下行

android:fitsSystemWindows="true" <-- In the parent view

去掉了。 已经添加回来,现在工作得很好。



文章来源: Child of RelativeLayout is not filling the height of the RelativeLayout