27

テキストビューの楕円サイズを設定しようとしています。次のコードを使用します。3 つのドットの後の切り捨てられた文字列の最後に「もっと見る」を追加したい。これが同じテキストビューで可能であれば、それは素晴らしいことですが、別のテキストビューで「もっと見る」こともできます。許可される最大行数は 4 です。最初のテキスト ビューの幅を設定しようとしましたが、最初の 3 行の終わりに空白が残りました。下の画像をご覧ください。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/tvReviewDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:maxLines="4"
        android:text="I tend to shy away from restaurant chains, but wherever I go, PF Chang&apos;s has solidly good food and, like Starbucks, they&apos;re reliable. We were staying in Boston for a week and after a long day and blah blah blah blah... "
        android:textColor="@color/black"
        android:textSize="13dp" 
        android:maxLength="280"
        android:ellipsize="end"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/tvReviewDescription"
        android:layout_alignParentRight="true"
        android:text="@string/label_view_more"
        android:textColor="@color/yellow" />
</RelativeLayout>

ここに画像の説明を入力

4

14 に答える 14

14

これは Runtime 中に実現できます。文字列の長さを確認し、このように文字列の最後に Underlined View More を追加するだけです。

例として長さ「20」を使用しましたが、要件に応じて変更できます。

final TextView result = (TextView) findViewById(R.id.textview);

String text = "I tend to shy away from restaurant chains, but wherever I go, PF Chang&apos;s has solidly good food and, like Starbucks, they&apos;re reliable. We were staying in Boston for a week and after a long day and blah blah blah blah...";

if (text.length()>20) {
    text=text.substring(0,20)+"...";
    result.setText(Html.fromHtml(text+"<font color='red'> <u>View More</u></font>"));       

}
于 2013-09-30T17:43:46.453 に答える
5

私のライブラリをチェックしてください: https://github.com/AhmMhd/SeeMoreTextView-Android

<com.abdulhakeem.seemoretextview.SeeMoreTextView
    android:id="@+id/textview
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>

利用方法:

TextView seemoreTv = (TextView) findViewById(R.id.textview)

seemoreTv.setContent("some really long text here.")

また、recyclerview でもうまく機能します。

于 2018-10-09T07:27:25.347 に答える
4

これにより、楕円形の効果が得られます。

ブール値の isCheck= true を設定します。

これをxmlに入れます:

<TextView
        android:id="@+id/txt_id"
        android:maxLines="2"
        android:ellipsize="end"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

そしてコード:

txt_id= (TextView)findViewById(R.id.txt_id);
txt_id.setText("data");
txt_id.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
                   if (isCheck) {
                      txt_id.setMaxLines(10);
                      isCheck = false;
                   } else {
                      txt_id.setMaxLines(2);
                      isCheck = true;
           }
       }
  }
于 2016-12-20T21:49:39.017 に答える
-2

最初のテキストビューで android:layout_alignParentLeft="true" を使用する代わりに、 android:layout_toLeftOf="@+id/textView1" を使用します

これにより、重複するテキストが処理されます

于 2013-09-30T17:56:42.320 に答える