Buttons der Activity überlagern Fragment

  • Antworten:11
Dominic Schroeder
  • Forum-Beiträge: 27

06.06.2017, 13:40:09 via Website

Ahoi Leute! :)
Ich habe das Problem, dass, sobald ich mein Fragment durch drücken auf den "Hinzufügen Button" in den Container lade, die Elemente der Activity über dem Fragement liegen.. Das Fragment sollte eig. als eine Art Fenster über der Activity und ihrer Elemente liegen und diese somit zu einem Großteil verdecken.

So siehts ohne Fragment aus
https://abload.de/img/dqwdwqemuhi.jpeg

Und so dann mit:
https://abload.de/img/fewqfewp7u0b.jpeg

Hier meine XML mit dem Container für das Fragment (addCardsContainer).

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="superhelden.com.superheldenuebersichtsapp.Activities.DeckOverview">

<FrameLayout
    android:id="@+id/addCardsContainer"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</FrameLayout>

<android.support.constraint.Guideline
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/guideline3"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.65"
    tools:layout_editor_absoluteY="332dp"
    tools:layout_editor_absoluteX="0dp" />

<android.support.constraint.Guideline
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/guideline4"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.4"
    tools:layout_editor_absoluteY="0dp"
    tools:layout_editor_absoluteX="154dp" />

<Button
    android:id="@+id/addCards"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:text="@string/addCards"
    app:layout_constraintRight_toLeftOf="@+id/guideline4"
    app:layout_constraintTop_toTopOf="@+id/guideline3"
    android:layout_marginTop="8dp"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent" />

<Button
    android:id="@+id/removeCards"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="8dp"
    android:text="@string/removeCards"
    app:layout_constraintBottom_toTopOf="@+id/guideline5"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/guideline4"
    app:layout_constraintTop_toBottomOf="@+id/addCards"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp" />

<Button
    android:id="@+id/endGame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="8dp"
    android:text="@string/endGame"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/guideline4"
    app:layout_constraintTop_toTopOf="@+id/guideline5"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp" />

<android.support.constraint.Guideline
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/guideline5"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.88"
    tools:layout_editor_absoluteY="450dp"
    tools:layout_editor_absoluteX="0dp" />

<ListView
    android:id="@+id/amountOfTypesList"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintLeft_toLeftOf="@+id/guideline4"
    app:layout_constraintTop_toTopOf="@+id/guideline3"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginBottom="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp" />

<ListView
    android:id="@+id/deckList"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:scrollbars="horizontal"
    app:layout_constraintBottom_toTopOf="@+id/guideline3"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>

Und hier der Javacode der Activity (imports aus Platzgründen hier gecuttet).

public class DeckOverview extends AppCompatActivity {

FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
Button addCardsButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_deck_overview);
    addCardsButton = (Button) findViewById(R.id.addCards);
    addCardsButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            fragmentManager = getFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.addCardsContainer, new addCards());
            fragmentTransaction.addToBackStack("addCards");
            fragmentTransaction.commit();
        }
    });
}

}

— geändert am 06.06.2017, 13:41:37

Antworten
swa00
  • Forum-Beiträge: 3.704

06.06.2017, 13:45:41 via Website

Du könntest bringToFront() verwenden

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

06.06.2017, 14:58:17 via Website

Vielen Dank für die schnelle Antwort! Leider hatte es nicht ganz den gewünschenten Effekt (vllt verwende ichs aber auch nur falsch). Die Buttons der Activity liegen immer noch über dem Fragment aber nun sind die Elemente im Fragment anklickbar (also werden sie nicht mehr von den leeren ListViews der Activity überdeckt. Sind der Sache also schon näher! :D

So siehts nun aus

public class DeckOverview extends AppCompatActivity {

    FragmentManager fragmentManager;
    FragmentTransaction fragmentTransaction;
    Button addCardsButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_deck_overview);
        addCardsButton = (Button) findViewById(R.id.addCards);
        addCardsButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                View addCardsContainer = findViewById(R.id.addCardsContainer);
                addCardsContainer.bringToFront();
                fragmentManager = getFragmentManager();
                fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.addCardsContainer, new addCards());
                fragmentTransaction.addToBackStack("addCards");
                fragmentTransaction.commit();

            }
        });
    }

}

— geändert am 06.06.2017, 14:59:57

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

08.06.2017, 00:22:14 via Website

Hat keiner ne Idee? :(

Antworten
swa00
  • Forum-Beiträge: 3.704

08.06.2017, 00:28:42 via Website

Hallo Dominic,

bitte nicht pushen.

Es wird sich schon jemand melden , wenn er Dir effektiv helfen kann und die Zeit hat .

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

08.06.2017, 00:36:26 via Website

Entschuldige.. ist nur leider so, dass die Zeit drängt, da bald Abgabe des Projektes ist und unser Professor weiß auch keinen Rat :(

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

08.06.2017, 08:03:04 via Website

Warum machst du nicht gleich 2 Fragments und ordnest das eine in der Oberen hälfte und das andere in der unteren hälfte an?
Dann ist das obere deine Ansicht und das untere deine Navigation

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

Dominic SchroederLudyswa00

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

08.06.2017, 14:01:23 via Website

Ich mach doch gar keine 2 Fragments? o:
Ich habe 1 Fragment, dass in nen Container geladen wird. Der Rest gehört zur drunterliegenden Activity.

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

08.06.2017, 14:15:12 via Website

Da das ist mir klar, aber 2 Fragments sind eifnacher nebeneinander zu plazieren als Fragment und Activity

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

Dominic Schroederswa00

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

08.06.2017, 15:28:29 via Website

Also den Inhalt der Activity in ein statisches Fragment auslagern? Aber muss doch auch mit ner Activity gehen :/
Aber danke schonmal für den Tipp :)

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

08.06.2017, 15:41:03 via App

Muss ja aber wenns nicht geht hat man ja alternativen ;)

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

Dominic Schroederswa00

Antworten
Dominic Schroeder
  • Forum-Beiträge: 27

09.06.2017, 20:14:12 via Website

Das Problem ist gelöst!
Ich weiß nicht genau wieso aber das hinzufügen von

android:elevation="20dp"

hat es gefixt :)
Kann also gern geschlossen werden.

Antworten