在textview的末尾显示三个点

时间:2017-02-02 08:11:15

标签: android textview

在右侧我使用textview显示所选时区,如果用户选择它,则会根据我正在显示值的选择打开警告对话框。现在问题是我的时区值太长,那么它将不显示外观如下面的图像..我必须用“ ... ”替换它,如果它超过..如果我设置最大长度它将适用于这个小设备..但文本视图大小将改变基于设备宽度。所以我对如何处理这个问题感到困惑..请你帮我解决这个问题。

<LinearLayout
    android:layout_width="match_parent"
    android:minHeight=“60dp”
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginBottom=“10dp”
    android:visibility="visible">

  <EditText
     android:id="@+id/etZipCode"
     android:padding=“15dp”
     android:layout_marginBottom=“10dp”
     android:singleLine=true
     android:layout_width="match_parent"
     android:layout_weight="1"
     android:layout_height="wrap_content"
     android:maxLength=“8“
     android:inputType="text"
     android:imeOptions="actionNext" />

    <TextView
     android:padding=“15dp”
     android:layout_marginBottom=“10dp”
     android:singleLine=true
     android:layout_width="match_parent"
     android:minHeight="50dp"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:drawableRight="@drawable/ic_dropdown_pin"
     android:layout_marginBottom=“10dp“
     android:layout_marginLeft=“5dp”/>
</LinearLayout>

6 个答案:

答案 0 :(得分:3)

建议的解决方案

android:ellipsize="end"
android:maxLines="1"

是正确的,但缺乏重要的细节。您正在向TextView应用右侧的复合Drawable ..要使三个点出现在此场景中,您还必须将android:drawablePadding="{something}dp"属性应用于TextView。

希望它有所帮助!

答案 1 :(得分:2)

添加from lxml import html import requests page = requests.get('http://eoddata.com/stocklist/SGX/Z.htm') tree = html.fromstring(page.content) tree1 = tree.xpath('//td/a[contains(@href,"/stockquote/SGX")]/text()') tree2 = tree.xpath('//tr[@class]/td/following-sibling::td/text()') 属性以及drawablePaddingmaxLines

试试这个,

ellipsize

下面的截图,

Screenshot

答案 2 :(得分:1)

实际上(...)只有在文本大小调整textView时才会出现三个点。我认为你需要提供三个属性,它会出现。

android:maxLines="1"
android:ellipsize="end"
android:paddingRight="15dp"//size occupy by your arrow drawable. try with 20dp also

答案 3 :(得分:0)

试试这个:

android:singleLine="true"

答案 4 :(得分:0)

you can do this by this method:

public static void addShowMoreDots(String targetString, TextView tvStringHolder, int charactersLimit, @Nullable final View.OnClickListener onDotsClickListener) {

    if (targetString.length() > charactersLimit) {
        String dotsString = " [ ... ]";
        targetString = targetString.substring(0, charactersLimit).concat(dotsString);
        SpannableString spannableDots = new SpannableString(targetString);


        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                if (onDotsClickListener != null) {
                    onDotsClickListener.onClick(view);
                }
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setUnderlineText(false);
            }
        };
        int startIndex = targetString.length() - dotsString.length() + 1; //from where [ of [...] starts
        int endIndex = targetString.length();
        spannableDots.setSpan(clickableSpan, startIndex, endIndex, 0); //
        spannableDots.setSpan(new RelativeSizeSpan(1.5f), startIndex + 1, endIndex - 1, 0);
        spannableDots.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getAppContext(), R.color.colorButtonGreen)), startIndex + 1, endIndex - 1, 0);
        tvStringHolder.setMovementMethod(LinkMovementMethod.getInstance());
        tvStringHolder.setText(spannableDots, TextView.BufferType.SPANNABLE);
    } else {
        tvStringHolder.setText(targetString);
    }
}

答案 5 :(得分:0)

singleLine 已折旧

android:singleLine="true"

最好使用下面的代码,它支持在textview末尾带有3个点的各种maxLines

 android:ellipsize="end"
 android:maxLines="1"