TextView 和被其他 TextView 挤压时的 Ellipsize

发布于 2024-10-12 18:06:08 字数 1324 浏览 4 评论 0原文

我有一个相对布局,其中有两个文本视图。 Textview 1 与父级顶部和左侧对齐。 Textview 2 与textview 1 的右侧对齐,并与父级对齐。如果 1 中的文本太长,这会产生问题,这意味着 1 会将 2 推出屏幕(最坏的情况)。

我如何让这两个从文本 nr 1 而不是 2 中“牺牲”?最小宽度似乎不起作用。我的最终目标是省略文本 1,但似乎首先取决于文本视图的大小是否正确。

这是 XML

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout android:id="@+id/RelativeLayout01"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/TextView02"
          android:layout_alignParentRight="true"
          android:layout_toRightOf="@+id/TextView01"
          android:text="I am number 2"
          android:gravity="right"
          android:lines="1"
          android:minWidth="32sp">
</TextView>
<TextView android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:id="@+id/TextView01"
          android:layout_alignParentLeft="true"
          android:textSize="22sp"
          android:layout_width="wrap_content"
          android:lines="1"
          android:text="sd sd asd sad asd asd saasd a">
 </TextView>

</RelativeLayout>

I have a relativelayout, and in it two textviews. Textview 1 is aligned top and left with parent. Textview 2 is aligned to the right of textview 1, and to the right with parent. This creates a problem if the text in 1 is too long, meaning that 1 will push 2 out of the screen worst case.

How do I get these two to "sacrifice" from text nr 1 instead of 2? min width does not seem to work. My final goal is to ellipsize text 1, but seems to hinge on the textview to be sized correctly in the first place.

Here is the xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout android:id="@+id/RelativeLayout01"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/TextView02"
          android:layout_alignParentRight="true"
          android:layout_toRightOf="@+id/TextView01"
          android:text="I am number 2"
          android:gravity="right"
          android:lines="1"
          android:minWidth="32sp">
</TextView>
<TextView android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:id="@+id/TextView01"
          android:layout_alignParentLeft="true"
          android:textSize="22sp"
          android:layout_width="wrap_content"
          android:lines="1"
          android:text="sd sd asd sad asd asd saasd a">
 </TextView>

</RelativeLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱她像谁 2024-10-19 18:06:08

您可以使用权重属性通过水平线性布局轻松地做到这一点。以下代码将适合您。我也为您的视图设置了 id ,因此只需直接复制粘贴即可,它将在您的代码中工作。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    >
    <TextView
        android:id="@+id/TextView01"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Some Long and Random Text Some Long and Random Text"
        />
    <TextView
        android:id="@+id/TextView02"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_weight="0"
        android:layout_gravity="right"    
        android:text="I am number 2"
     />
</LinearLayout>

You can easily do this with a horizontal linearlayout using weight attribute. The following code will work for you. I set id s for your views as well so just directly copy paste this and it will work in your code.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    >
    <TextView
        android:id="@+id/TextView01"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Some Long and Random Text Some Long and Random Text"
        />
    <TextView
        android:id="@+id/TextView02"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_weight="0"
        android:layout_gravity="right"    
        android:text="I am number 2"
     />
</LinearLayout>
醉城メ夜风 2024-10-19 18:06:08

从我的文本视图中获取想法,然后像这样使用你的文本视图,希望它能工作:

                 <TextView
                    android:id="@+id/tv_songtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:text="Song Title"
                    android:singleLine="true"
                    android:ellipsize="end"
                    android:textSize="13dp"
                    android:textStyle="bold" />

get idea from my textview and just use your textview like this,hope it's work:

                 <TextView
                    android:id="@+id/tv_songtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:text="Song Title"
                    android:singleLine="true"
                    android:ellipsize="end"
                    android:textSize="13dp"
                    android:textStyle="bold" />
面犯桃花 2024-10-19 18:06:08

使用 TableLayout 的属性 android:shrinkColumns="0"

Use attribute android:shrinkColumns="0" of TableLayout.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文