web-dev-qa-db-ja.com

TextView Ellipsize(...)が機能しない

テキストがTextViewよりも長い場合に、末尾に3つのドットを表示するために、TextViewを一本並べたいです。理由はわかりませんが、わかりません。

私はすでに似たようなStackOverflowの質問に頭を抱えていましたが、解決策がありませんでした。たぶん誰かがいくつかの有用なヒントを持っています。

<LinearLayout 
    Android:layout_height="wrap_content" 
    Android:layout_width="fill_parent"
    Android:orientation="vertical">

    <TextView 
        Android:textStyle="bold" 
        Android:text="Full Name" 
        Android:layout_height="wrap_content" 
        Android:textSize="16sp"
        Android:layout_width="wrap_content" 
        Android:id="@+id/lName"
        Android:layout_gravity="center_vertical" 
        Android:maxLines="1"
        Android:ellipsize="end"/>
</LinearLayout>

上記のLinearLayoutは、他の2つのLinearLayoutsにネストされています。たぶん、これは知っておくことが重要です。すでに属性「singleLine」も試しましたが、これは非推奨であり、とにかく機能しないと言う人もいます。

23
Bins Ich

スタイルファイルに次のスタイルを追加します(通常はstyles.xml):

<style name="autoscroll">
    <item name="Android:singleLine">true</item>
    <item name="Android:ellipsize">Marquee</item>
    <item name="Android:marqueeRepeatLimit">Marquee_forever</item>
    <item name="Android:focusable">true</item>
    <item name="Android:focusableInTouchMode">true</item>
    <item name="Android:scrollHorizontally">true</item>
</style>

次に、スタイル@style/autoscrollTextViewに:

<TextView Android:id="@+id/lName"
      style="@style/autoscroll" />

この方法が必要な場合は、自動スクロール機能を簡単に再利用できます。

46
Stefano Ortisi

TextViewのxmlにこれを追加します。

        Android:maxWidth="200dp" 
        Android:maxLines="1" 

なので

        Android:singleLine="true"  

非推奨です。

18
Khan
Android:id="@+id/lName" Android:layout_width="150dp"
    Android:layout_height="wrap_content"
    Android:ellipsize="end"
    Android:singleLine="true"
    Android:text="Avinljhakjhsajkhakjshda"
    Android:textSize="16sp"
9

singleLine="true"が、この属性は非推奨になりました。ellipsizeおよびscrollHorizontally="true"代わりに。

1
flawyte

「Android:ems」属性を追加しない限り、これは機能しません

        Android:ellipsize="end"
        Android:singleLine="true"
        Android:ems="8"
0
Zain