线性布局不会在percentRelativeLayout中获取其父级的高度

时间:2017-07-17 19:01:09

标签: android android-layout xamarin xamarin.android

我正在使用Xamarin Android,我有一个包含行视图的列表视图,其中包含以下内容:

enter image description here

所有这些视图都包含在PercentRelativeLayout中,因为我希望保持宽度成比例。所以我遇到的问题是,由于左边的两个布局都是空的并且在运行时填充(绝对没有办法解决这个问题),他们的高度测量为0,然后设置Rowview高度为0,然后将控件布局向右设置为高度为0,然后拉伸到其中最大控件的大小(例如:)

enter image description here

我试过了:

  • 使用布局权重和高度0允许布局本身伸展以填充父级

  • 在布局中使用控件本身的布局权重

  • 完全删除布局,只需将图像按钮包装在PercentRelativeLayout中,然后使用布局位置正确定位

  • 在子项中使用基于百分比的布局宽度和高度来填充高度(这似乎仅适用于宽度,但不适用于高度)

  • 将虚拟视图添加为填充以将控件布局推入位置

  • 将基于百分比的边距添加到布局本身,子项,填充虚拟视图以及它们的每个组合

我尝试的没有一件事有任何影响,影响线性布局高度的唯一因素就是硬编码高度。

我的问题是,一旦测量完一切,我怎么能告诉这个布局占据行视图的全高? (如果您有任何其他问题需要帮助解决这个问题,请告诉我,我很乐意帮忙)

编辑#1:这是我的行视图的xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:layout_width="400dp"
  android:layout_height="match_parent"
  android:id="@+id/LeadRowHolder">

  <!--Tag Holder-->
  <RelativeLayout
    android:layout_height="wrap_content"
    app:layout_widthPercent="80%"
    android:paddingTop="10dp"
    android:orientation="horizontal"
    android:id="@+id/LeadTagLayout">

  </RelativeLayout>

  <!--Details Holder-->
  <LinearLayout
    android:layout_height="match_parent"
    app:layout_widthPercent="80%"
    android:orientation="horizontal"
    android:id="@+id/LeadDetailsLayout"
    android:layout_below="@id/LeadTagLayout"
    android:paddingTop="20dp"
    android:paddingBottom="20dp"
    android:paddingRight="10dp"
    android:paddingLeft="10dp">
    <android.webkit.WebView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/leadShortDescription"/>
  </LinearLayout>
  <!--Controls Holder-->
  <LinearLayout
    android:layout_height="wrap_content"
    app:layout_widthPercent="20%"
    android:orientation="horizontal"
    android:id="@+id/LeadControlsLayout"
    android:layout_toRightOf="@id/LeadTagLayout"
    android:gravity="center_vertical|center_horizontal">
    <ImageButton
      android:layout_height="50dp"
      android:layout_width="50dp"
      android:id="@+id/MenuCall3x"
      android:background="@drawable/MenuCall3x"/>
    <ImageButton
      android:layout_height="30dp"
      android:layout_width="20dp"
      android:id="@+id/MenuFwd3x"
      android:background="@drawable/MenuFwd3x"/>
  </LinearLayout>
</android.support.percent.PercentRelativeLayout>

1 个答案:

答案 0 :(得分:1)

我对你的代码玩了一下,结果似乎很好。

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:id="@+id/LeadRowHolder">

    <!--Tag Holder-->
    <RelativeLayout
        android:layout_height="wrap_content"
        app:layout_widthPercent="80%"
        android:orientation="horizontal"
        android:id="@+id/LeadTagLayout">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="this is a test"/>

    </RelativeLayout>

    <!--Details Holder-->
    <LinearLayout
        android:layout_height="wrap_content"
        app:layout_widthPercent="80%"
        android:orientation="horizontal"
        android:id="@+id/LeadDetailsLayout"
        android:layout_marginTop="5dp"
        android:layout_below="@id/LeadTagLayout">
        <android.webkit.WebView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="50dp"
            android:id="@+id/leadShortDescription"/>
    </LinearLayout>
    <!--Controls Holder-->
    <LinearLayout
        android:layout_height="wrap_content"
        app:layout_widthPercent="20%"
        android:layout_centerVertical="true"
        android:orientation="horizontal"
        android:id="@+id/LeadControlsLayout"
        android:layout_toRightOf="@id/LeadTagLayout"
        android:gravity="center_vertical|center_horizontal">
        <ImageButton
            android:layout_height="50dp"
            android:layout_width="50dp"
            android:id="@+id/MenuCall3x"/>
        <ImageButton
            android:layout_height="30dp"
            android:layout_width="20dp"
            android:id="@+id/MenuFwd3x"/>
    </LinearLayout>
</android.support.percent.PercentRelativeLayout>

请告诉我这是否适合您在运行时(我已删除了您未提供的用于测试此XML的一些背景可绘制文件)。 我在RelativeLayout中添加了一个TextView来测试他的身高