0

TextViewsで短い文章を表現する必要があります。私はrecyclerViewGridLayoutManagerとし、グリッドの各セルのTextViewに各文を設定しました。その点は、グリッドの各セルがTextViewのテキストに従って幅を変更したいということです。つまり、長い文章では画面が全幅になり、文章が非常に短い場合には同じ行になければなりません。recyclerviewの内部テキストの長さを変更する列幅を取得する方法

また、GridViewを使ってみましたが、希望の結果も得られませんでした。

どうすればいいですか?

EDIT

item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/unselected_term" 
     android:padding="10dp"> 

     <TextView 
      android:id="@+id/item_text" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:textColor="@color/term_text" 
      android:gravity="center" 
      android:textSize="18sp"/> 

</LinearLayout> 

EDIT 2

Desired layout

これは、レイアウトの外観の例です。各要素の長さは常に同じではありません。だから私はより大きな幅の要素をより短いものにするレイアウトが必要です。

+0

ここにあなたのxmlを投稿できますか?リサイクルビューのアイテムに使用しているレイアウト – Umair

+0

@Umair Code added: –

+0

私は答えを更新しました。あなたのために働くかどうかチェックしてください。 – Umair

答えて

2

以下のレイアウトを使用すると、テキストに従って行アイテムのサイズが変更されます。これを試して、あなたのために働いているかどうかを教えてください。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:custom="http://schemas.android.com/apk/res-auto" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="5dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimaryLight" 
    android:padding="10dp"> 

    <TextView 
     android:id="@+id/item_text" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:minWidth="100dp" 
     android:textColor="@color/primary_text" 
     android:gravity="center" 
     android:textSize="18sp"/> 

    </LinearLayout> 
</LinearLayout> 
+0

テキストがないときに幅を保持しないようにするには、android:textviewからminWidth属性を削除します。 – Umair

+0

ご協力いただきありがとうございますが、要素が常に2つの列にあるため、これでは問題は解決しません。私は達成しようとしていることをより良く示すためにイメージをアップロードしました。 –

+0

@IvánRodríguezTorres私が知っている限り、より大きなテキストを中間の小さなテキストで下部に表示したいと思っています。同時に、指定された領域のテキストのサイズに完全に依存するように幅を設定する必要がありますか? – Umair

2

RecycelrViewにはStaggeredGridLayoutManagerを使用する必要があります。それについてはStaggeredGridLayoutManagerとしてください。

+0

もう少し詳しいことを教えてください。私はStaggeredGridで遊んでいましたが、私は望みの結果を得ていませんでした。問題は、私が必要とする列と行の数が動的であることです。読み込まれたテキストに応じて変わります。私は明確にするために質問を更新しました。 –

関連する問題