Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Das Thema "Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 17.11.2011, 14:56   #1 (permalink)
Neuer Benutzer

Registriert seit: 04.08.2011
Beiträge: 16
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Hallo,

kurz und knapp. ich habe ein linearLayout welches match_parent und 80 als breite und höhe hat. drehe ich jetzt das tablet und wechsle in den portrait modus wird mein linearlayout von der breite her kleiner. ich brauche aber den konkreten wert wie breit das layout im landscape oder portrait modus gerade ist (für eine berechnung wieviele buttons einer bestimmten größe ohne zu scrollen in das linlay passen würden).
Frage: GIBT ES EINEN WEG DEN WERT VON MATCH_PARENT IN EINER SITUATION (LANDSCAPE O. PORTRAIT) IN DP AUSZULESEN??

danke
terth
Terth ist offline   Mit Zitat antworten
Alt 17.11.2011, 21:16   #2 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Hi, ja den gibt es. Du kannst die Höhe und Breite in Pixeln abfragen und das anschließend umrechnen. Das sollte helfen:

scaling - Android and setting width and height programmatically in dp units - Stack Overflow

Bei weiteren Fragen, frag =)
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 18.11.2011, 13:45   #3 (permalink)
Neuer Benutzer

Registriert seit: 04.08.2011
Beiträge: 16
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard AW: Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Hallo,

danke für deine Antwort. Für diese Code Zeilen bräuchte ich doch einen dps wert:
Code:
final float scale = getContext().getResources().getDisplayMetrics().density;  
int pixels = (int) (dps * scale + 0.5f);
diese dps variable muss doch dann aus meiner Viewgroup kommen deren width ich dynamisch, trotz match_parent berechnen möchte. getWidth liefert mir allerdings immer 0, obwohl ich ja sehen kann das das rote layout in meinem test über den bildschirm bis zu seinem nachbar layout geht, also augenscheinlich nicht null. diesen wert brauche ich. gibt es da noch eine möglichkeit an die pixel values zu kommen?

in meinem test hier ist es das ziel eine dp zahl oder eine andere größeninformation aus dem roten layout zu ermitteln um dynamisch die anzahl an buttons zu berechnen die reinpassen würde. die muss natürlich unterschiedlich sein je nachdem ob ich landscape oder portrait habe.
ich poste dir hier mal meinen test:

main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/labels"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/buttons"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/widthLabel"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:text="LinLayWidth below: "
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/infoLabel"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/areaRight"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="#ff00ff00"
        android:orientation="vertical" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/buttons"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/labels"
        android:layout_toLeftOf="@+id/areaRight"
        android:background="#ffff0000"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>
Activity
Code:
public void onCreate(Bundle savedInstanceState) 
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
}
vielen dank
liebe grüße
Terth
Terth ist offline   Mit Zitat antworten
Alt 18.11.2011, 14:17   #4 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Die Umrechnung sollte jetzt kein Problem mehr darstellen. Eine View hat immer als Höhe und Breite 0, wenn die Werte noch nicht berechnet wurden. In der onCreate Methode wirst du beispielsweise immer 0 erhalten, weil die Layoutgröße noch nicht feststeht!

Zum Testen könntest du beispielsweise mal einen Button hinzufügen und in der onClick Methode die Höhe bzw. Breite abfragen. Ich wette, jetzt sind die Werte nicht mehr 0

Die Frage ist nun, wo man die Abfrage richtig platziert. Ich nutze in der Regel einen OnGlobalLayoutListener. Mit ihm kann man Statusänderungen der View oder Sichtbarkeit der Kinder in der View abfangen. Hier ein Snippet:

Code:
		imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
			@Override
			public void onGlobalLayout() {
				if (viewHeight == 0 || viewWidth == 0) {
					viewHeight = imageView.getHeight();
					viewWidth = imageView.getWidth();
				}
			}
		});
Beachte, dass die onGlobalLayout Methode keine Parameter hat und sie wird definitiv öfter aufgerufen. Daher ist es empfehlenswert zu überprüfen, ob der gesamte Methodenbody ausgeführt werden muss!

Falls es dich interessiert, die Methode habe ich auch in meiner Shutdown App eingebunden. Dort geht es um eine Grafik, die entsprechend skaliert werden muss, wenn die Höhe und Breite der View feststeht. Mit dem Listener klappt es wunderbar.

Viele Grüße
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 20.11.2011, 21:36   #5 (permalink)
Neuer Benutzer

Registriert seit: 04.08.2011
Beiträge: 16
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard AW: Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Hallo,

hat super geklappt das ist echt eine verdammt praktische Methode. Das schreib ich auf jeden Fall in meine Seminararbeit. Ich fertige gerade für die uni und die arbeit eine art guide durch android an. natürlich kein anspruch auf vollständigkeit aber das ist schon cool.

danke
grüße
Terth
Terth ist offline   Mit Zitat antworten
Alt 20.11.2011, 21:47   #6 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout

Kein Problem Freut mich, dass es klappt.

Und noch eine Anmerkung zum Forum (auch wenn es bettelnd rüberkommt, was es nicht soll ), es gibt hier einen Danke Button, der auch betätigt werden darf

Viele Grüße
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei v Ralle v für diesen Beitrag:
Terth (21.11.2011)
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Auslesen einer Webseite beschleunigen ChrisMobile Android App Entwicklung 3 24.09.2011 10:49
Auslesen einer (eigenartigen) XML-Datei chemistry Android App Entwicklung 2 08.09.2011 15:19
SMS von einem Nandroid-Backup auslesen? NiXiN Root / Hacking / Modding für Motorola Milestone 4 03.10.2010 20:45
Misstrauen bei Gesprächen mit einem/einer anderen? franziska-nb Smalltalk und Offtopic 9 01.08.2010 09:31
SimpleCursorAdapter imageview ausgabe von einer DB auslesen, wie? kkm Android App Entwicklung 1 23.05.2010 10:11




Du liest gerade: "Auslesen einer konkreten Pixelzahl von match_parent bei einem LinearLayout" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.