TextView - wrap_content- hintergrund

  • 7 Antworten
  • Letztes Antwortdatum
DagobertDokate

DagobertDokate

Dauer-User
137
Hallo Leute,

ich habe folgendes Problem zu dem ich gerade keine Lösung finde.

Es geht um die Box mit der roten Schrift.
Wie bekomme ich es Layout technisch so hin, das die Box auch bei so ungünstigen Wortkonstellationen nach dem Inhalt endet?

Also wie auf Bild zwei.

Hier mein style:

Code:
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:singleLine">false</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:layout_marginLeft">10dp</item>
<item name="android:background">@color/withe_80</item>
<item name="android:paddingLeft">5dp</item>
<item name="android:paddingRight">5dp</item>
<item name="android:text">@string/lorem_ipsum</item>
<item name="android:textAppearance">android:attr/textAppearanceMedium</item>
<item name="android:textColor">@color/red</item>
<item name="android:textStyle">bold</item>

Ich hoffe ihr versteht mich^^

lg. Dagobert
 

Anhänge

  • textview wrapp.png
    textview wrapp.png
    118,9 KB · Aufrufe: 227
  • textview lorem.png
    textview lorem.png
    122,1 KB · Aufrufe: 228
Zuletzt bearbeitet:
Eine Frage: der text "Teeeeeeeeext" ist ohne ein zeilensprung "\n" eingegeben worden?
 
Ja siggi ;)

lg.
 
Es sit ja eine Textview...ein Tablelayout hat die Methode setShrinkable() und setStretchable() aber da deine Textzview sich so verhällt und so tut als ob der Text immer ncoh in der ersten zeile ist und länger als der Parent ist und deswegen sich voll ausstreckt......nützt das auch ncihts mmmmmmhhhh

Der ursprüngliche Beitrag von 15:34 Uhr wurde um 15:38 Uhr ergänzt:

ahhh okay ich hab eine gute Antwort auf SO dafür gefunden

Du musst deine eigene Textview klasse schreiben und dort die Methode onMeasure() überschreiben.

PHP:
public class WrapWidthTextView extends TextView {

...

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    Layout layout = getLayout();
    if (layout != null) {
        int width = (int)FloatMath.ceil(getMaxLineWidth(layout))
                + getCompoundPaddingLeft() + getCompoundPaddingRight();
        int height = getMeasuredHeight();            
        setMeasuredDimension(width, height);
    }
}

private float getMaxLineWidth(Layout layout) {
    float max_width = 0.0f;
    int lines = layout.getLineCount();
    for (int i = 0; i < lines; i++) {
        if (layout.getLineWidth(i) > max_width) {
            max_width = layout.getLineWidth(i);
        }
    }
    return max_width;
}
}


siehe hier den vollständigen Thread:

http://stackoverflow.com/questions/...tent-in-multiple-line-textview-filling-parent


lg
 
  • Danke
Reaktionen: DagobertDokate
Naja ich hab gehofft das ich nicht in der Minderheit mit dem Problem bin, und es einfach nen XML-Config dafür gibt :D

Aber wenn da nichts mehr kommt werde ich diese Brechstange-Methode verwenden =) Danke dafür erstmal.

Hab ja noch 2-3 Wochen zum sammeln^^

lg. Dagobert
 
Wenn du einen Container rechts daneben setzt und beiden eine weight von 1 gibst dann sollte das das linke Element verkleinern..
Hab die Frage gerade nur mit dem Handy überflogen, schaue mir es später nochmal an.

Btw: warum keine card view? Wenn man schon mit CustomXY anfängt, dann lieber keine halben Sachen.. ;-)
 
  • Danke
Reaktionen: DagobertDokate
Sollte ich noch erwähnen das es sich um ein Relativ-Layout handelt?^^

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/default_list_item_wrapper_style">

    <com.fmsirvent.ParallaxEverywhere.PEWImageView
        android:id="@+id/image"
        style="@style/default_item_image_style" />

    <TextView
        android:id="@+id/sub_title"
        style="@style/default_item_sub_title_style"
        android:layout_alignBottom="@+id/image" />

    <TextView
        android:id="@+id/title"
        style="@style/default_item_title_style" />

    <View
        android:id="@+id/divider"
        style="@style/default_item_divider_style" />

    <TextView
        android:id="@+id/aabstract"
        style="@style/default_item_abstract_style" />

    <ImageView style="@style/default_item_arrow_style" />

</RelativeLayout>

leider steht mir hier weight nicht zur Verfügung. Ich hab es mit nem contrainer daneben versucht mit "fill_parent", was leider auch nicht den erwarteten erfolg bringt. Werde gleich mal das in ein LinearLayout kapseln.

lg. Dagobert

Der ursprüngliche Beitrag von 12:47 Uhr wurde um 12:59 Uhr ergänzt:

So hab es nun so abgeändert:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/default_list_item_wrapper_style">

    <com.fmsirvent.ParallaxEverywhere.PEWImageView
        android:id="@+id/image"
        style="@style/default_item_image_style" />

    <LinearLayout
        android:id="@+id/sub_title_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/image"
        android:layout_alignEnd="@+id/imageView2"
        android:layout_alignRight="@+id/imageView2"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/sub_title"
            style="@style/default_item_sub_title_style" />

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.0" />
    </LinearLayout>

    <TextView
        android:id="@+id/title"
        style="@style/default_item_title_style" />

    <View
        android:id="@+id/divider"
        style="@style/default_item_divider_style" />

    <TextView
        android:id="@+id/aabstract"
        style="@style/default_item_abstract_style" />

    <ImageView
        android:id="@+id/imageView2"
        style="@style/default_item_arrow_style" />

</RelativeLayout>

hat leider auch nicht den gewünschten Erfolg gebracht. Und mit weight in beiden Elementen wirds nur noch schlimmer. Ich werde jetzt mal die Idee von Jaiel umsetzten.

lg.

Der ursprüngliche Beitrag von 12:59 Uhr wurde um 13:01 Uhr ergänzt:

Jaiels Antwort gewinnt =)

Danke für eure Mühe.

lg. Dagobert

Der ursprüngliche Beitrag von 13:01 Uhr wurde um 13:02 Uhr ergänzt:

Btw: warum keine card view? Wenn man schon mit CustomXY anfängt, dann lieber keine halben Sachen.. ;-)

Was bringt mir denn die Card view für Vorteile in einer normalen ListView?

lg. Dagobert
 
Ich sehe gerade, dass du paralaxe View einbindest. Ja... dann wird wahrscheinlich ein LinearLayout nicht funktionieren (jedenfalls geht das mit den FABs auch nur im RL..)
Meine "Idee" bezog sich aber aufs LL.. Sorry, dass ich das vorhin übersehen habe :-/
 
Zurück
Oben Unten