我正在使用ListView来显示电影列表。我使用android:layout_weight来安排每个项目,并为我的RelativeLayout添加0.5,其中包含2个TextView: ZoneName 和 FilmName
fragment1.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fond"
>
<TextView
android:text="En séléctionnant un des écrans ci-dessous, vous accéderai à des informations complémentaires sur les contenus qui sont en train de passer à l'écran."
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="20dp"
android:id="@+id/secondScreenInformationTextView"
android:textColor="#FFF" />
<ListView
android:id="@+id/lv_select_screen"
android:background="#26FFFFFF"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
此处我的 item_select_screen.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:id="@+id/screenTable"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:id="@+id/item_img_screen_type"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_weight="0.2"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_marginTop="10dp"
>
<TextView
android:id="@+id/item_title_screen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:textSize="18sp"
android:textColor="#FFF"
android:textStyle="bold" />
<TextView
android:id="@+id/item_content_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:layout_below="@+id/item_title_screen"/>
</RelativeLayout>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_weight="0.2"
android:id="@+id/item_poster_miniature"/>
<ImageView
android:layout_width="15dp"
android:layout_margin="2dp"
android:layout_height="15dp"
android:layout_weight="0.1"
android:src="@drawable/menu_triangle"
android:id="@+id/item_img_triangle_select_screen"
android:layout_gravity="center_vertical"/>
</LinearLayout>
它适用于短字符串,但我添加了android:maxLines =“1”和android:ellipsize =“end”以在必要时快捷键入字符串。但是当它发生时,它会扩展我的RelativeLayout的宽度,我的3 imageView似乎减少了以补偿变化。
我可以使用maxWidth来修复它,但它不再是动态的。
答案 0 :(得分:2)
当您使用重量时,请始终根据0dp
给出orientation
作为孩子的身高或宽度,并让重量进行测量。
所以你的RelativeLayout
的宽度应为0dp,其余的相同。我猜那就是问题。
答案 1 :(得分:1)
是的,这种行为是非常期待的。
您正在使用,
android:layout_width="wrap_content"
代表TextView
。所以它会尝试包装其全部内容并相应地调整其大小。
由于内容很大而且是椭圆化的, TextView会使用最大可用宽度来包装它的所有内容,然后在最后进行椭圆化。
所以,解决方案是,
1)TextView的宽度固定,最后有椭圆形。
2)或以编程方式将内容截断为完美布局渲染所需的长度。您还可以将ellipsize添加到截断的字符串中。
两者都会产生相同的效果(您的选择),但绝不会扭曲您的布局。
答案 2 :(得分:1)
问题是你在dp中设置宽度会增加重量,尝试将它们设置为0dp
<ImageView
android:id="@+id/item_img_screen_type"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="0.2"
/>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_marginTop="10dp"
>
<TextView
android:id="@+id/item_title_screen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:textSize="18sp"
android:textColor="#FFF"
android:textStyle="bold" />
<TextView
android:id="@+id/item_content_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:layout_below="@+id/item_title_screen"/>
</RelativeLayout>
<ImageView
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="0.2"
android:id="@+id/item_poster_miniature"/>
<ImageView
android:layout_width="0dp"
android:layout_margin="2dp"
android:layout_height="15dp"
android:layout_weight="0.1"
android:src="@drawable/menu_triangle"
android:id="@+id/item_img_triangle_select_screen"
android:layout_gravity="center_vertical"/>