Eine genaue Weise zu bestimmen, die der gemessenen Höhe der anzeigen, noch bevor es geändert von GEGANGEN, um SICHTBAR

Heute habe ich ein layout, das wie folgt aussieht. Es enthält.

  • Titel text anzeigen " und "Preis" text-Ansicht, was sichtbar ist, immer.
  • Beschreibung der Text-Ansicht, die sichtbar oder nicht, je nachdem, erweitern oder reduzieren.

Kollabieren (Während der app-Start)

Eine genaue Weise zu bestimmen, die der gemessenen Höhe der anzeigen, noch bevor es geändert von GEGANGEN, um SICHTBAR

Erweitern (Wenn der Benutzer tippt auf es)

Eine genaue Weise zu bestimmen, die der gemessenen Höhe der anzeigen, noch bevor es geändert von GEGANGEN, um SICHTBAR

Ich möchte ein paar nette animation, um es. So, ich bezog mich auf https://stackoverflow.com/a/13381228/72437

Eines der wichtigsten element ist, um zu wissen, die genaue Höhe Beschreibung der Text-Ansicht, noch bevor es sichtbar ist.

Jedoch, ich wissen, ein paar code-Typ. Sie sind nicht präzise

//v is description text view.
v.measure(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();

//v is description text view.
v.measure(MeasureSpec.makeMeasureSpec(LayoutParams.MATCH_PARENT, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, MeasureSpec.EXACTLY));
final int targtetHeight = v.getMeasuredHeight();

Wird das Ergebnis mit dem Wert 32. (Die korrekte gemessene Höhe angenommen, 92). Dies ist die Höhe für die erste Zeile des Textes. Dies endet meine animation endete an

Eine genaue Weise zu bestimmen, die der gemessenen Höhe der anzeigen, noch bevor es geändert von GEGANGEN, um SICHTBAR

Darf ich wissen, was ist der richtige Weg, um zu bestimmen, die der gemessenen Höhe der anzeigen, noch bevor es geändert von GEGANGEN, um SICHTBAR?

Mein layout code ist wie folgt :

        <LinearLayout
            android:clickable="true"
            android:id="@+id/chart_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/dummy"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.6"
                    android:layout_height="match_parent"
                    android:gravity="left"
                    android:textSize="20sp" 
                    android:textColor="#ff000000"
                    android:text="Summary chart" />
                <TextView
                    android:id="@+id/chart_price_text_view"
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.4"
                    android:layout_height="match_parent"
                    android:gravity="right"
                    android:textSize="20sp" 
                    android:textColor="#ffF76D3C"
                    android:text="$2.99" />

            </LinearLayout>
            <TextView
                android:visibility="gone"
                android:id="@+id/chart_description_text_view"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginBottom="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"         
                android:text="@string/currency_exchange_description"
                android:textColor="#ff626262"
                android:textSize="15sp" />                 
        </LinearLayout>
  • Es sei denn, Sie wissen, wie viele Zeilen der text einnehmen wird, gibt es nicht eine Möglichkeit, zu Messen, bevor es gemessen wird. Einen hack Weg, es zu tun sein könnte, um Sie alle zu INVISIBLE eher als gegangen, am Anfang Messen, dann GONE Sie sofort danach. Wenn Sie nur ein paar Ansichten, könnte dies nicht spürbar auf die Benutzer.
  • Haben Sie eine Erklärung dafür, warum mehrere eingewickelt Zeile nicht funktioniert? Ich dachte, v., Messen(... sollte funktionieren (Obwohl es nicht funktioniert jetzt)
  • Nicht sicher, aber ich denke, es ist einfach zu Messen, was erwartet er für eine TextView im Allgemeinen. Es kann doch nicht erkennen, es müssen mehrere Zeilen.
Schreibe einen Kommentar