如何根据左侧宽度限制textView的宽度

时间:2018-10-03 12:57:53

标签: android android-layout textview truncate android-relativelayout

我有一个布局(可以是相对的,线性的或约束的)

将TextView对齐到父对象的左侧,然后将ImageView(固定宽度)对齐,从textView的右侧开始。

我希望先渲染图像,然后再渲染文本视图。

意思是我希望在渲染图像后根据左侧空间截断文本视图。

  <RelativeLayout
      android:id="@+id/account_name_layout"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:layout_marginBottom="@dimen/account_menu_account_name_layout_bottom_margin">
    <TextView
        android:id="@+id/account_name"
        style="@style/AccountDataAccountName"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:lines="1"
        android:ellipsize="end"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        tools:text="emailisverylongaswellwewantittogettruncated@gmail.longdomain.com"/>

    <ImageView
        android:id="@+id/account_name_chevron"
        android:layout_width="@dimen/account_menu_chevron_size"
        android:minWidth="@dimen/account_menu_chevron_size"
        android:layout_height="@dimen/account_menu_chevron_size"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/account_name"
        android:layout_marginTop="@dimen/account_menu_chevron_top_margin"
        android:layout_marginLeft="@dimen/account_menu_chevron_left_margin"/>
  </RelativeLayout>

我尝试了几种选择:

1)告诉文本留在图像视图中

2)在文本视图上加粗-在两个元素之间留出空隙。

3)将minWidth设置为图像视图-并没有使imageView比例变小。

有什么主意如何首先渲染图像以及如何根据左侧宽度限制textView的宽度?

1 个答案:

答案 0 :(得分:0)

您可以在imageView上强制宽度。这样可以防止textview将其推离该空间。如果您说的是这样做的话,请张贴结果图像,因为那毫无意义。

您的上述示例彼此之间没有约束,没有强制执行不重叠或下推的操作。您需要一些约束,例如“ toTheLeftOf”或“ Weight”或LinearLayout来强制实施,因为Weight仅在LinearLayout中有效。

最简单的方法是给imageView一个硬编码的DP宽度和高度,然后在线性布局中将文本设置为0宽度,权重为1。

如果需要,您还可以使用百分比,使用LinearLayout然后放一个例如10​​0的权重总和(代表100%)。然后为您的图像分配所需的百分比,例如layout_weight = 30,并给textview 70。

这些选项中的任何一个都对您有效。如果您尝试了但没有尝试,那么请发布您尝试过的代码,因为它将起作用,除非您正在执行某些在当前示例中不可见的愚蠢操作。每次我这样做时,每次行时,通常会在左侧固定图像,在右侧增加文本。