如何防止我的文本视图将其他视图推离屏幕?

时间:2019-12-09 04:35:52

标签: android layout

我不确定为什么我的布局是这样的,如果我的书名textview太长,它将整个布局推离屏幕并弄乱了所有内容。我已经尝试过施加引力并将权重设置为textview的1这是解决不了什么。有人可以帮我吗?预先谢谢你。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="#FFFFFF"
    android:orientation="vertical">


        <ImageView
            android:id="@+id/bookImage"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:scaleType="fitCenter" />


        <TextView
            android:id="@+id/bookTitleTv"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_below="@id/bookImage"
            android:layout_weight="1"
            android:singleLine="false"

        android:paddingLeft="@dimen/album_title_padding"
            android:paddingTop="@dimen/album_title_padding"
            android:paddingRight="@dimen/album_title_padding"
            android:text="A boy with tigers"
            android:textColor="#424242"
            android:textSize="@dimen/album_title" />

        <TextView
            android:id="@+id/bookAuthorTv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/bookTitleTv"
            android:paddingLeft="@dimen/album_title_padding"
            android:paddingRight="@dimen/album_title_padding"
            android:paddingBottom="@dimen/songs_count_padding_bottom"

            android:text="by Georeg Lopeaa"
            android:textSize="@dimen/songs_count"
            android:textStyle="italic" />

        <TextView
            android:id="@+id/deleteTextView"
            android:layout_width="match_parent"
            android:layout_height="@dimen/ic_album_overflow_height"
            android:layout_below="@+id/bookAuthorTv"
            android:layout_alignBottom="@+id/bookAuthorTv"
            android:layout_marginBottom="0dp"
            android:paddingLeft="@dimen/album_title_padding"
            android:paddingRight="@dimen/album_title_padding"
            android:paddingBottom="@dimen/songs_count_padding_bottom"
            android:text="@string/vertical_ellipsis"
            android:textSize="@dimen/songs_count" />


</LinearLayout>

3 个答案:

答案 0 :(得分:0)

用户固定高度,例如android:layout_height="180dp"或包装内容以仅占用TextView中android:layout_height="wrap_content"这样的必要空间。

答案 1 :(得分:0)

您使用它的方式是错误的。要在线性布局中使用权重,请在其父布局中添加一些weightsum并正确使用。请使用以下代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#FFFFFF"
android:weightsum="4"
android:orientation="vertical">


    <ImageView
        android:id="@+id/bookImage"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:layout_weight="1"
        android:scaleType="fitCenter" />


    <TextView
        android:id="@+id/bookTitleTv"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_below="@id/bookImage"
        android:layout_weight="1"
        android:singleLine="true"
        android:ellipsize = "end"
        android:paddingLeft="@dimen/album_title_padding"
        android:paddingTop="@dimen/album_title_padding"
        android:paddingRight="@dimen/album_title_padding"
        android:text="A boy with tigers"
        android:textColor="#424242"
        android:textSize="@dimen/album_title" />

    <TextView
        android:id="@+id/bookAuthorTv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/bookTitleTv"
        android:paddingLeft="@dimen/album_title_padding"
        android:paddingRight="@dimen/album_title_padding"
        android:paddingBottom="@dimen/songs_count_padding_bottom"
        android:layout_weight="1"
        android:text="by Georeg Lopeaa"
        android:textSize="@dimen/songs_count"
        android:textStyle="italic" />

    <TextView
        android:id="@+id/deleteTextView"
        android:layout_width="match_parent"
        android:layout_height="@dimen/ic_album_overflow_height"
        android:layout_below="@+id/bookAuthorTv"
        android:layout_alignBottom="@+id/bookAuthorTv"
        android:layout_marginBottom="0dp"
        android:paddingLeft="@dimen/album_title_padding"
        android:paddingRight="@dimen/album_title_padding"
        android:paddingBottom="@dimen/songs_count_padding_bottom"
        android:text="@string/vertical_ellipsis"
        android:layout_weight="1"
        android:textSize="@dimen/songs_count" />

您还可以根据屏幕上想要显示的视图使用小数形式的重量。此外,请确保

  1. 在垂直视图下使用重量,将高度保持为0dp,这样就可以 高度根据分配的重量和
  2. 在水平视图的情况下,将宽度保持为0dp,以便将 宽度根据分配的重量

答案 2 :(得分:0)

您可以像这样(建议)在文本视图上使用固定的高度和宽度:

<TextView 
    android:id="@+id/secondLineTextView" 
    android:layout_width="match_parent"
    android:layout_height="60dp" 
/>

或仅根据所需大小限制字符数(不推荐):

   <TextView 
        android:id="@+id/text" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:maxLines="1" 
        android:maxLength="10" 
        android:ellipsize="end"
     />