我有两个名为compliance_details.xml
和compliance_details_row.xml
以下是我的compliance_details.xml代码
<?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:orientation="vertical">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/taskNameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="70dp"
android:layout_weight="3"
android:singleLine="true"
android:text="TaskName"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/dueDateLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Due Date"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/ageingLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Ageiging"
android:textColor="#000"
android:textSize="20sp" />
</TableRow>
</TableLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:paddingTop="10dp" />
</LinearLayout>
and following is my compliance_details_row.xml code
<?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">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/taskNameValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="70dp"
android:layout_weight="3"
android:singleLine="true"
android:text="TaskName"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/dueDateValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Due Date"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/ageingValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Ageiging"
android:textColor="#000"
android:textSize="20sp" />
</TableRow>
</TableLayout>
</LinearLayout>
在我的适配器中,我使用compliance_row.xml对compliance_details_row.xml进行了充气。
但是当我这样做时,compliance_details_row的元素有点失真。
从上图中可以看出,合规性名称应位于标题TaskName
下,但合规性名称有点失真,并且到期日期值仅部分可见。我怎样才能解决这个问题?
答案 0 :(得分:1)
你真的不需要TableLayout来实现这一目标。只需使用weightLum的LinearLayout即可。要获得所需的比例 - 更改每个TextView的权重值。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:id="@+id/taskNameValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="TaskName"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/dueDateValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="Due Date"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/ageingValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="Ageiging"
android:textColor="#000"
android:textSize="20sp" />
</LinearLayout>
答案 1 :(得分:1)
从父视图(compliance_details_row.xml
)中删除taskname,duedate和agin ...并将其添加为自定义适配器中的第一个元素。 compliance_row.xml
仅确保此布局中的行采用Table
格式,它无法控制父布局的视图。因此,要么将compliance_details_row.xml
和compliance_row.xml
同时更改为LinearLayout
weight
,要么删除compliance_details_row.xml
中的三个元素。
答案 2 :(得分:1)
尝试将LinearLayout与android:layout_weight
属性一起用于xml:
<强> compliance_details.xml 强>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/taskNameLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.50"
android:text="TaskName"
android:layout_marginRight="5dp"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/dueDateLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_weight="0.25"
android:text="Due Date"
android:layout_marginRight="5dp"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/ageingLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="5dp"
android:layout_weight="0.25"
android:text="Ageiging"
android:textColor="#000"
android:textSize="20sp" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:focusable="false"
android:focusableInTouchMode="false"
android:paddingTop="10dp" />
<强> compliance_details_row.xml 强>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/taskNameValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="0.50"
android:singleLine="true"
android:text="TaskName"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/dueDateValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_marginRight="5dp"
android:layout_weight="0.25"
android:singleLine="true"
android:text="Due Date"
android:textColor="#000"
android:textSize="20sp" />
<TextView
android:id="@+id/ageingValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="0.25"
android:singleLine="true"
android:text="Ageiging"
android:textColor="#000"
android:textSize="20sp" />
</LinearLayout>