gpt4 book ai didi

ICS 文本中的 android:ellipsize 在省略号之后继续

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:17 24 4
gpt4 key购买 nike

我有一个 TextView ,我正在以编程方式设置 maxLines,然后将其设置为 android:ellipsize="end"。它部分起作用,但由于某种原因,被截断的文本在 4.2.2 中的省略号之后继续了几个字符。被截断的是实际文本,而不是新字符。

它在 2.3.6 中也不能正常工作,因为它为每个部分添加了一个带换行符或“\n”的省略号。

我没有使用任何自定义字体,我之前看到这引起了问题。

这里是我计算和设置最大线的地方:

final TextView reviewView = (TextView) view.findViewById(R.id.textViewPosition3);

ViewTreeObserver observer = reviewView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int maxLines = (int) reviewView.getHeight() / reviewView.getLineHeight();
reviewView.setMaxLines(maxLines);
reviewView.setEllipsize(TruncateAt.END);
reviewView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//reviewView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});

这是我的 xml:

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


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentTestLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >


<ImageView
android:id="@+id/restaurantImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/test"
android:layout_marginTop="-10dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
/>

<ImageView
android:id="@+id/squareBlack"
android:layout_alignRight="@id/restaurantImage"
android:layout_alignTop="@id/restaurantImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/square_black_small"
/>

<TextView
android:id="@+id/textViewPosition"
android:layout_alignRight="@id/squareBlack"
android:layout_alignLeft="@id/squareBlack"
android:layout_alignBottom="@id/squareBlack"
android:layout_alignTop="@id/squareBlack"
android:layout_margin="1dp"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a test"
android:textSize="25sp"
android:textColor="#a6cbff"
android:textStyle="bold"
/>

<ImageView
android:id="@+id/squareBlue"
android:layout_toLeftOf="@id/squareBlack"
android:layout_alignTop="@id/squareBlack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/square_blue_small"
/>

<TextView
android:id="@+id/textViewPosition1"
android:layout_alignRight="@id/squareBlue"
android:layout_alignLeft="@id/squareBlue"
android:layout_alignBottom="@id/squareBlue"
android:layout_alignTop="@id/squareBlue"
android:layout_margin="1dp"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7.5"
android:textSize="25sp"
android:textColor="#902515"
android:textStyle="bold"
/>

<TextView
android:id="@+id/restaurantName"
android:layout_alignLeft="@id/restaurantImage"
android:layout_alignBottom="@id/restaurantImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Restaurant Name"
android:textSize="25sp"
android:textColor="#fff"
android:textStyle="bold"
android:background="@drawable/greybar"
/>

<TextView
android:id="@+id/textViewPosition2"
android:layout_below="@id/restaurantImage"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="February 15, 2013"
android:textColor="#555"
android:textStyle="bold"
android:textSize="15sp"
/>

<Button android:id="@+id/readReview"
android:background="@drawable/readreview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Read the Review"
android:textColor="#fff"
android:textColorHighlight="#ccc"
android:textSize="15sp"
android:textStyle="bold"
android:layout_centerHorizontal="true"
/>

<TextView
android:id="@+id/textViewPosition3"
android:layout_below="@id/textViewPosition2"
android:layout_above="@id/readReview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColorLink="#C90404"
android:layout_marginRight="15dp"
android:layout_marginLeft="15dp"
android:textColor="#000"
/>



</RelativeLayout>

最佳答案

我以编程方式解决了这个问题,但我不确定这是最好的解决方案,因为它感觉更像是一种 hack。不过它似乎在起作用。

        ViewTreeObserver observer = reviewView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int maxLines = (int) reviewView.getHeight() / reviewView.getLineHeight();

reviewView.getViewTreeObserver().removeGlobalOnLayoutListener(this);


if(reviewView.getLineCount() > maxLines)
{
int lineEndIndex = reviewView.getLayout().getLineEnd(maxLines - 1);
String text = reviewView.getText().subSequence(0, lineEndIndex-3) +" ...";
reviewView.setText(text);
}
}
});

关于ICS 文本中的 android:ellipsize 在省略号之后继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com