我有一个包含自定义行的列表视图。在行中有这些项目:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView1"
android:layout_width="10dp"
android:layout_height="fill_parent"
android:focusable="false"
android:scaleType="fitXY">
</ImageView>"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textsll"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginLeft="5dp">
<TextView android:id="@+id/textView1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:maxLines="1"
android:ellipsize="end">"
</TextView>
<TextView android:id="@+id/textView2"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_alignParentBottom="true"
android:layout_below="@+id/textView1"
android:maxLines="1"
android:ellipsize="end">
</TextView>
</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textsll2"
android:layout_gravity="center_vertical|right"
android:layout_marginLeft="10dp">"
<TextView android:id="@+id/textView3"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:textColor="#000000"
android:paddingBottom="5dp"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center_vertical"
android:background="#87EB81">
</TextView>
</LinearLayout>
</LinearLayout>
如果两个文本视图都有一些内容,它们会在行中垂直居中(差不多)。
但如果较低的textview为空,我会调用:
holder.textView2.setVisibility(View.INVISIBLE);
holder.textView.setGravity(Gravity.CENTER_VERTICAL);
仍然,上面的textview进入行的顶部。为什么呢?
如果我将它设置为View.GONE,我会得到这个,但我不希望行的高度发生变化:
答案 0 :(得分:1)
使用android:layout_weight
将主要LinearLayout的所有子项设置为相同的。
使用LinearLayout作为textView1和textView2的父级。使用android:layout_weight
使每个文件具有相同的大小。
使用android:gravity="center_vertical|left"
定义TextView,然后,如果您不想显示第二个TextView,请将其可见性设置为View.GONE
。
也许这会解决您的问题,
答案 1 :(得分:0)
尝试将一些值修改为RelativeLayout的高度,如 -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textsll"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginLeft="5dp">
答案 2 :(得分:0)
<强>更新强>
在RelativeLayout
中,视图与其父级,RelativeLayout
本身或其他视图对齐。例如,我们声明描述与RelativeLayout
的底部对齐,并且标题位于描述的上方并锚定到父级的顶部。在GONE描述中,RelativeLayout
不知道在何处定位标题的下边缘。要解决此问题,您可以使用名为layout_alignWithParentIfMissing的非常特殊的布局参数。
这个boolean
参数只是告诉RelativeLayout
在缺少约束目标时使用自己的边作为锚点。例如,如果您将视图定位到GONE视图的右侧并将alignWithParentIfMissing
设置为true,则RelativeLayout
会将视图锚定到其左边缘。在我们的情况下,使用alignWithParentIfMissing
会导致RelativeLayout
将标题的底部与其底部对齐。
答案 3 :(得分:0)
通过使用RelativeLayout
在父对齐的帮助下设置layout_below
和layout_above
并将layout_centerInParent
的值设置为true,可以在layout_centerHorizontal
中实现这一点{{1}} 1}}
希望,这会奏效。
答案 4 :(得分:0)
尝试使用:
<TextView
...
android:layout_height="?android:attr/listPreferredItemHeight"
...
/>
<_>在your_list_item.xml中。并使用View.GONE
答案 5 :(得分:0)
要解决您的问题,您可以做的是让LinearLayout填充Parent。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
并使用View.GONE
这将使行高相同。
如果您在世界上最好的汽车之后看到差距,请尝试使用相对布局并将最后一个布局对齐到底部。