我正在使用Xamarin Android,我有一个包含行视图的列表视图,其中包含以下内容:
所有这些视图都包含在PercentRelativeLayout
中,因为我希望保持宽度成比例。所以我遇到的问题是,由于左边的两个布局都是空的并且在运行时填充(绝对没有办法解决这个问题),他们的高度测量为0,然后设置Rowview
高度为0,然后将控件布局向右设置为高度为0,然后拉伸到其中最大控件的大小(例如:)
我试过了:
使用布局权重和高度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>
答案 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来测试他的身高