如何防止 RelativeLayout 中的截断
How to prevent truncation in RelativeLayout
我正在制作一个应用程序来显示按受欢迎程度和日期排序的电影。
当我点击电影时,它会将我带到电影的描述。我正在使用 RelativeLayout 作为描述 UI。但如果电影名称太大,则会被截断。
我尝试了一些来自 Whosebug 的 textView 解决方案,例如
android:scrollHorizontally="true"
android:ellipsize="end"
android:lines="1"
我知道有一种使用 LinearLayout 的解决方案。但我想知道是否有仅使用 RelativeLayout 的解决方案。
完整代码如下:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin_less"
android:paddingTop="@dimen/activity_vertical_margin_less"
android:paddingBottom="@dimen/activity_vertical_margin_less"
tools:context="com.example.puneet.movieout.MovieInfoDisplay"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Movie Title"
android:id="@+id/textView"
android:textStyle="bold"
android:layout_below="@+id/imageView"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:scrollHorizontally="true"
android:ellipsize="end"
android:lines="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Movie name is Long. Movie name is Long"
android:layout_marginTop="20dp"
android:id="@+id/textView2"
android:layout_above="@+id/textView4"
android:layout_toRightOf="@id/textView"
android:layout_alignStart="@+id/textView6"
android:layout_below="@+id/imageView"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Rating"
android:id="@+id/textView3"
android:textStyle="bold"
android:layout_below="@+id/textView2"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Rating"
android:layout_toRightOf="@id/textView3"
android:id="@+id/textView4"
android:layout_below="@+id/textView"
android:layout_alignStart="@+id/textView6"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Release Date"
android:id="@+id/textView5"
android:textStyle="bold"
android:layout_below="@+id/textView3"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:layout_marginRight="10dp"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView6"
android:layout_toRightOf="@id/textView5"
android:layout_below="@+id/textView4"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Overview"
android:id="@+id/textView7"
android:textStyle="bold"
android:layout_below="@+id/textView5"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView8"
android:layout_toRightOf="@id/textView7"
android:layout_below="@+id/textView6"
android:layout_alignStart="@+id/textView6"
android:textSize="20sp"/>
</RelativeLayout>
</ScrollView>
如果您不想让文本被截断,您必须删除 ellipsize
属性并在 HorizontalScrollView
中添加您的 TextView
。
你的观点应该是这样的:
<HorizontalScrollView
android:id="@+id/txt_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_above="@+id/textView4"
android:layout_toRightOf="@id/textView"
android:layout_alignStart="@+id/textView6"
android:layout_below="@+id/imageView"
android:scrollbars="none"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Movie name is Long. Movie name is Long"
android:id="@+id/textView2"
android:textSize="20sp"/>
</HorizontalScrollView>
这样您就可以将文本嵌入到卷轴中而不会截断文本。
我正在制作一个应用程序来显示按受欢迎程度和日期排序的电影。
当我点击电影时,它会将我带到电影的描述。我正在使用 RelativeLayout 作为描述 UI。但如果电影名称太大,则会被截断。
我尝试了一些来自 Whosebug 的 textView 解决方案,例如
android:scrollHorizontally="true"
android:ellipsize="end"
android:lines="1"
我知道有一种使用 LinearLayout 的解决方案。但我想知道是否有仅使用 RelativeLayout 的解决方案。
完整代码如下:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin_less"
android:paddingTop="@dimen/activity_vertical_margin_less"
android:paddingBottom="@dimen/activity_vertical_margin_less"
tools:context="com.example.puneet.movieout.MovieInfoDisplay"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Movie Title"
android:id="@+id/textView"
android:textStyle="bold"
android:layout_below="@+id/imageView"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:scrollHorizontally="true"
android:ellipsize="end"
android:lines="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Movie name is Long. Movie name is Long"
android:layout_marginTop="20dp"
android:id="@+id/textView2"
android:layout_above="@+id/textView4"
android:layout_toRightOf="@id/textView"
android:layout_alignStart="@+id/textView6"
android:layout_below="@+id/imageView"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Rating"
android:id="@+id/textView3"
android:textStyle="bold"
android:layout_below="@+id/textView2"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User Rating"
android:layout_toRightOf="@id/textView3"
android:id="@+id/textView4"
android:layout_below="@+id/textView"
android:layout_alignStart="@+id/textView6"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Release Date"
android:id="@+id/textView5"
android:textStyle="bold"
android:layout_below="@+id/textView3"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:layout_marginRight="10dp"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView6"
android:layout_toRightOf="@id/textView5"
android:layout_below="@+id/textView4"
android:textSize="20sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Overview"
android:id="@+id/textView7"
android:textStyle="bold"
android:layout_below="@+id/textView5"
android:layout_alignParentStart="true"
android:textColor="@color/black"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView8"
android:layout_toRightOf="@id/textView7"
android:layout_below="@+id/textView6"
android:layout_alignStart="@+id/textView6"
android:textSize="20sp"/>
</RelativeLayout>
</ScrollView>
如果您不想让文本被截断,您必须删除 ellipsize
属性并在 HorizontalScrollView
中添加您的 TextView
。
你的观点应该是这样的:
<HorizontalScrollView
android:id="@+id/txt_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_above="@+id/textView4"
android:layout_toRightOf="@id/textView"
android:layout_alignStart="@+id/textView6"
android:layout_below="@+id/imageView"
android:scrollbars="none"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Movie name is Long. Movie name is Long"
android:id="@+id/textView2"
android:textSize="20sp"/>
</HorizontalScrollView>
这样您就可以将文本嵌入到卷轴中而不会截断文本。