Java Android Studio Maß einheit?

DreamGamer

Lieutenant
Registriert
Feb. 2017
Beiträge
543
Hallo, ich bin aktuell eine App am Programmieren habe als Einheit immer dp und sp genommen. Nur habe ich jetzt mal ein anderen gerät angeschlossen und bemerkt das hmm ja nichts passt bei einer anderen Auflösung. Gibt es irgendwie dort ein bestimmten wert den ich nehmen kann um z.b. die Hälfte des Bildschirms zu nehmen denn ich möchte unten eine toolbar haben, wo Items drin sind die ich aktuell mit margin dort drin habe also mit "sp" war glaube ich komplett falsch ist. In der Webprogrammierung wo ich ja normalerweise tätig bin gibt es ja die Möglichkeit variablen wie "vh / vw" zu benutzen oder eine Prozent Anzahl. Geht dies bei Android auch oder ist es dort komplett anders und ich mache alles falsch? Freue mich über Hilfe :)

MFG DreamGamer
 
Wenn du LinearLayout verwendest, gibt es da z.B. das layout_weight-Attribut.
 
Es verteilt die Views proportional zur weight. Wenn du 2 Views mit je layout_weight=1 hast, belegen beide je 50% des verfügbaren Platzes.
 
Ahhh ich verstehe :) Aber wie macht man es wenn ich immer einen spacer zwischen jedem objekt haben möchte mit einer größe von einem teil des bildschirms? würde ja normalerweise margin oder padding nehmen. Aber dann ist ja das haupt Item kleiner. Und Padding funktioniert irgendwie nicht.
 
Du kannst auch einfach simple Views dazwischen setzen und denen eine entsprechende weight geben.
 
Nice es funktioniert danke :) Jetzt nur noch als Frage ich habe ein ImageView in der Mitte meiner App und diesem Image View habe ich diese Parameter zugewiesen:
Code:
android:layout_width="300sp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
dort habe ich dasselbe Problem wenn es eine andere Auflösung ist funktioniert es nichtmehr. Soll ich es dort auch mit layout_weight machen wenn ja hätte ich am Ende 100 Layouts ^^


WEITERE FRAGE:
Was wäre eig. wenn ich eine Toolbar nur mit Images haben möchte wenn ich alle 50dp x 50dp mache wird bei Geräten mit 600 x 400 nicht alles angezeigt und es wäre Todes groß was müsste ich da machen?
 
Zuletzt bearbeitet:
DreamGamer schrieb:
wenn es eine andere Auflösung ist funktioniert es nichtmehr. Soll ich es dort auch mit layout_weight machen wenn ja hätte ich am Ende 100 Layouts ^^
Was heißt denn hier "funktioniert nicht"? Das Bild ist nicht mehr mittig? Android Studio (und vermutlich auch andere IDEs) hat einen Layout Inspector, der dir von jedem View die berechneten Eingenschaften (Margin, Padding, etc.) anzeigt.
Layouts kann man auch aufteilen und wiederverwenden oder du machst das im Code. Mit der Einheit sp musst du aufpassen, die skaliert auch abhängig von der eingestellten Schriftgröße.

DreamGamer schrieb:
Was wäre eig. wenn ich eine Toolbar nur mit Images haben möchte wenn ich alle 50dp x 50dp mache wird bei Geräten mit 600 x 400 nicht alles angezeigt und es wäre Todes groß was müsste ich da machen?
Wenn du die icons nicht zwingst angezeigt zu werden, wird automatisch ein Dropdown-Menü (3 vertikale Punkte) angezeigt. Ansonsten werden glaube ich nur so viele angezeigt wie reinpassen. Wenn dir das nicht zusagt, musst du dir ein anderes Verhalten für diesen Fall überlegen und dann entsprechend googeln.
 
Hi, sorry für die späte ^^ Zu dem ersten Zitat ich habe mache ein Klicker spiel wo in der Mitte immer eine Grafik ist die man klicken kann. Diese habe ich in einer Größe von "300sp" ich habe es ja jetzt so verstanden das die Größe sp immer mit der ausgewählten Schriftgröße zusammenhängt aber welche Einheit sollte ich denn dann nehmen so das bei displays mit 2k normal aussieht und bei einem Display mit 600x400 auch gut aktuell ist es so bei 2k sieht alles perfekt aus aber bei 600x400 schaut das Image über alle anderen ebenen bzw. es ist einfach überdimensioniert groß. Welche größe soll ich dort nehmen wenn es keine % Anzahl gibt und gibt es so etwas wie in der Webprogrammierung wie "overflow"? Zum zweiten Zitat wie kann ich denn machen dass die Bilder erzwungen bzw. nicht erzwungen angezeigt zu werden? Denn aktuell ist es das die Images einfach nur noch halb zu sehen sind.
 
Wenn die Bilder nicht per xml Layout auf die richtige Größe bringen kannst, mach es notfalls über den Code. Da kannst du dann die aktuelle Auflösung abfragen und dann dem Bild die passende Größe geben.
Wenn die Bilder abgeschnitten werden, skalieren sie nicht innerhalb des ImageView(?). Da gibt es diverse Optionen, die man setzen kann, wenn das Bild zu groß oder zu klein ist. Google ich aber jetzt nicht mehr wie die genau heißen.
 
Per code klingt eig. nach einer sehr guten Alternative. Nur bekomme ich jedesmal diesen Fehler... und ich weiß nicht warum "java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams"
Ich verstehe nicht warum es nicht gecastet werden kann. So sieht der Code aus:
Code:
ImageView clickImage = (ImageView) view.findViewById(R.id.clickImage);
clickImage.setLayoutParams(new LayoutParams(20, 100));

Und importiert habe ich natürlich "android.view.ViewGroup.LayoutParams". Weiß jemand wieso dies nicht geht?
 
Es gibt mehrere LayoutParams-Klassen. Wenn du RelativeLayout verwendest, musst du auch entsprechend nach RelativeLayout.LayoutParams casten.
 
Zurück
Oben