RelativeLayout - Nur letztes item wird angezeigt ?

  • Antworten:4
David
  • Forum-Beiträge: 20

15.03.2014, 10:44:01 via Website

Hallo zusammen,

ich habe ein RelativeLayout mit zwei Buttons von denen immer nur der letzte angezeigt wird. Auch wenn ich 3 oder 4 Buttons einfüge wird immer nur der letzte Button im Layout sichtbar. In der Vorschau sind jedoch alle sichtbar, nur auf dem Device ist das der Fall.
Der Auslöser ist, dass ich versuche, im Code die Größe der Buttons zu verändern. Darauf kann ich jedoch nicht verzichten. Hier mein Code:

1<?xml version="1.0" encoding="utf-8"?>
2<RelativeLayout xmlns:android="//schemas.android.com/apk/res/android"
3android:layout_width="wrap_content"
4android:layout_height="wrap_content" >
5
6
7<LinearLayout
8 android:id="@+id/layoutOverlay"
9 android:layout_width="500dp"
10 android:layout_height="300dp"
11 android:layout_centerHorizontal="true"
12 android:layout_centerVertical="true"
13 android:orientation="vertical" >
14
15 <LinearLayout
16 android:layout_width="match_parent"
17 android:layout_height="wrap_content"
18 android:orientation="horizontal" >
19 </LinearLayout>
20
21 <RelativeLayout
22 android:layout_width="match_parent"
23 android:layout_height="fill_parent"
24 android:orientation="horizontal" >
25
26 <Button
27 android:id="@+id/button1"
28 android:layout_width="wrap_content"
29 android:layout_height="wrap_content"
30 android:layout_alignParentRight="true"
31 android:layout_centerVertical="true" />
32
33 <Button
34 android:id="@+id/button2"
35 android:layout_width="wrap_content"
36 android:layout_height="wrap_content"
37 android:layout_alignParentLeft="true"
38 android:layout_centerVertical="true" />
39 </RelativeLayout>
40</LinearLayout>
41
42</RelativeLayout>


1public class MainActivity extends Activity {
2 Button btn_1;
3 Button btn_2;
4
5
6
7@Override
8protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10
11 setContentView(R.layout.activity_main);
12
13
14 btn_1 = (Button) findViewById(R.id.button1);
15 btn_2 = (Button) findViewById(R.id.button2);
16
17 btn_1
18 .setLayoutParams(new android.widget.RelativeLayout.LayoutParams(
19 150, 150));
20 btn_2
21 .setLayoutParams(new android.widget.RelativeLayout.LayoutParams(
22 150, 150));
23
24}
25
26}

Danke schonmal !

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.03.2014, 10:53:45 via Website

1. Was soll das werden? win widget oder eine Activity?
2. Warum schränkst du das layout auf eine Größe ein?
1android:layout_width="500dp"
210 android:layout_height="300dp"
3. Was soll das mit dem setzen der LayoutParams deiner Meinung nach bringen?
4. Gibt's irgendwelche Fehler in LogCat?

— geändert am 15.03.2014, 10:53:55

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
David
  • Forum-Beiträge: 20

15.03.2014, 11:25:16 via Website

win widget sagt mir nichts, ich denke es wird also eine Activity.
Das setzen der Größe ist nur für die Vorschau in eclipse, damit ich eine ungefähre Vorstellung davon bekomme, wie es aussehen soll. Diese settings werden ja wieder verworfen, da ich die Größe des Layouts neu setze.
Die Werte 150 und 150 sind hier nur exemplarisch. In der richtigen App verwende ich variable Daten, die sich anhand der Bildschirmgröße errechnen. Das oben genannte Beispiel reproduziert nur mein Problem in der originalen App. In der Logcat ist nichts zu sehen

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.03.2014, 11:28:30 via Website

Bitte überarbeite noch dein Layout, da ist ja noch ein leeres Linearlayout (Absicht?) und die Buttons sind in einem RelativeLayout geschachtelt.
Gehört das so oder Fehler?
Des weiteren kannst du ja einfach mal den Activity Code ausblenden und schauen ob es dann so angezeigt wird.
Wenn du zeit hast, wäre es nett mal ein Screenshot zu Posten, denn dann kann man das besser nachvollziehen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
David
  • Forum-Beiträge: 20

15.03.2014, 11:34:44 via Website

Das ist alles Absicht und ergibt auch Sinn wenn man das ganze Projekt sieht. Wie gesagt, dieser Abschnitt hat gereicht, um das Problem zu reproduzieren. Es muss also so mit dem gezeigten Layout klappen.
Also wenn ich z.B. Zeile 20 bis 22 auskommentiere, dann wird Button1 in gewünschter Größe dargestellt, Button2 sieht man auch, aber eben nur in der voreingestellten Größe (wirkt auf meinem S4 etwas größer als Button1, auf einem Tablet wäre er kleiner als Button1). Kommentiere ich Zeil 17-22 aus werden beide Buttons dargestellt, jedoch natürlich auch wieder nur in der voreingestellten Größe.

Edit: Das Problem lag darin, dass die beiden Buttons übereinander liegen. Durch:

addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

konnte ich den ersten Button verschieben, sodass er auch sichtbar ist.

— geändert am 15.03.2014, 14:45:27

Antworten