Wrong language? Choose different language instead:

close
Android Forum » Android Developer Forum » Android Entwickler Forum » Breite einer View in Laufzeit bekommen

Breite einer View in Laufzeit bekommen

Breite einer View in Laufzeit bekommen
verfasst am 16.06.2011 14:57:04
Hallo Leute,
ich habe ein Layout, welches auf fill parent gestellt ist. Das ist dafür gut um herauszufinden wie viel Platz zur Verfügung steht. Danach möchte ich die Breite (jeweils prozentual) anpassen.
Nur leider bekommt man in der onCreate, onResume und in der onPostResume immer 0 als Breite, da die Views ja noch nicht gezeichnet sind.
Meine derzeitige Lösung (zu der ihr mir verholfen habt :-) ):
1Handler h = new Handler();
2 h.postDelayed(new Runnable() {
3
4 @Override
5 public void run() {
6 // TODO Auto-generated method stub
7 final LinearLayout improvementBar = (LinearLayout) findViewById(R.id.improvement_bar);
8 int width = improvementBar.getWidth();
9 width = max*width/intent;
10 improvementBar.setLayoutParams(new RelativeLayout.LayoutParams(width,improvementBar.getHeight()));
11
12 }
13 }, 100);

Funktioniert auch, ist aber nicht sonderlich schön, da es oft nicht passt mit den 100ms. Gibt es denn keine andere Lösung die Breite einer View zu bekommen?
MfG Maximilian

-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag :grin: - Birthdays Website

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Breite einer View in Laufzeit bekommen
verfasst am 16.06.2011 15:26:40 (über AndroidPIT-App)
Wenn du die gesamte Breite willst, kannst du auch ein 'Display' Objekt benutzen. Ich glaub das lief irgendwie über den DisplayManager..
Lg Ansgar

-----
http://www.c-labs-android.de

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Breite einer View in Laufzeit bekommen
verfasst am 16.06.2011 15:31:56
Danke, aber ich brauche leider nur die Breite der View. Links und rechts daneben sind noch andere Elemente.
MfG

-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag :grin: - Birthdays Website

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Breite einer View in Laufzeit bekommen
verfasst am 16.06.2011 15:35:35 (über AndroidPIT-App)
Achso, ok.
Hast du es schonmal mit mehr, als 100ms probiert? (Irgendwann dauerts dann aber auch zu lang)
Lg Ansgar

-----
http://www.c-labs-android.de

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Breite einer View in Laufzeit bekommen
verfasst am 16.06.2011 15:40:02
Ja habe ich leider auch schon. Nur das Problem ist, bei manchen dauert es eben länger bevor der Code abgelaufen ist, wenn ich es dann auf über 1 sekunde stelle, ist es wie du schon gesagt hast zu lang. Da der User dann sieht wie sich die Breite wechselt.
Komisch das es in der onPostResume nicht da ist, eigtl. wird es doch nach der onCreate erstellt oder?

-----
Vergesse nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag :grin: - Birthdays Website

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)