我有获取与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>
你会希望添加layout_alignParentTop="true"
和layout_alignParentBottom="true"
,以status
-这将确保该视图触及顶部和底部post
的RelativeLayout
。
我有我的细胞内部的类似问题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
如果你的RelativeLayout是滚动型里面,然后在滚动型,你需要把它添加fillViewPort PARAM并设置为true
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
我有一个类似的问题与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);
}
});
有同样讨厌的问题它的方式是没有意义的。 到底是什么工作对我来说是改变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"
...
希望这可以帮助
余期间固定通过手动设置布局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()
);
}
如果你知道你要设置的确切高度,你可以为这个组件(视图)设置高度或了minHeight。 机器人:在你的情况,你可以用设置了minHeight =“76dp”,或者您可以使用的LayoutParams编程设定。 希望能帮助到你!
我的问题是以下行
android:fitsSystemWindows="true" <-- In the parent view
去掉了。 已经添加回来,现在工作得很好。