2012-03-07 6 views
2

私はイメージと2つのテキストビューを持つ水平線形レイアウトを持っています。いくつかの言語(ドイツ語...)では、テキストが長すぎるため、すべてを1行に収めるためにレイアウトは画面よりも広くなければなりません。これを防ぐため、アンドロイドは自動的にテキストビューを次の行に折り返します。レイアウトが画面よりも広い場合のラッピングビューの選択

どのような方法でテキストビューをラップアップするかを選択する方法はありますか?現時点では、レイアウトに最後に表示されたビューがラップされているように見えます。しかし、私は本当に以前のテキストビューの1つをラップし、最後のテキストビューを常に1行に表示させたいと思います。これは可能ですか?関連するビューのほとんどをサブクラス化して、保護されたメソッドをオーバーライドできます。

HERESに私のコードの大まかな概要:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/some_icon" /> 
    <TextView 
    android:id="@+id/can_wrap_if_neccessary" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/some_really_long_text" /> 
    <TextView 
    android:id="@+id/shouldnt_wrap" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/some_more_really_long_text" /> 
</LinearLayout 

答えて

2

Iそれを解消しました:解決策は、ラップしたいビューにlayout_weight属性を設定し、ラップしたくないビューでは設定しません。 layout_weightを持つビューは、それ以外のビューより優先してラップされます。

+0

実行時にどのテキストを折り返すかを知るには?テキストビューの折り返しは画面の幅に依存します。あなたの質問に対する答えは何ですか?どのような方法でテキストビューがラップアップするかを選択する方法はありますか? –

+1

どのビューがラップされるのかわからないので、どのビューをラップするかを設定する必要があります。特定のビューにレイアウトウェイトを設定しても、他のビューでは表示されない場合、ウェイト(またはウェイトの低いビュー)は、ウェイトが表示されていないビューより前にラップされます。 –

+0

私の両方のtextviews線形レイアウトではなく、私はその重量としてラップし、右のテキストビューで残りの部分を埋めるために残したいスクリーンのパーセントを追加 –

2

我々は、テキストがラップするかを知ることができます。

ロジック:テキストが他のラップされる場合は、テキストの幅が画面の幅よりも大きい場合 テキストの最初の計算幅、そのテキストが

をラップされます以下のメソッドはtrueを返しますfalseを返します

ソースコード

boolean isTextWrapped(String text) { 
     boolean isWrapped = false; 
     int widthOfText = 0; 
     int deviceWidth = 0; 
     // calculate widthOftext 
     TextView textView = new TextView(this); 
     textView.setVisibility(View.GONE); 
     Rect bounds = new Rect(); 
     Paint textPaint = textView.getPaint(); 
     textPaint.getTextBounds(text, 0, text.length(), bounds); 
     widthOfText = bounds.width(); 
     System.out.println("...text view width..."+widthOfText); 
     // calculate width of screen 
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     deviceWidth = displaymetrics.widthPixels; 
     System.out.println("...text view width..."+widthOfText+"...screen width..."+deviceWidth); 
     isWrapped = widthOfText > deviceWidth ? true : false; 
     return isWrapped; 

    } 
+0

ありがとうございました。しかし、それは私が求めるべきものではありませんでした。どのテキスト・ビューがラップするのかを知る必要はなく、どちらをラップするのかを指定する必要があります。 –

関連する問題