2017-02-02 1 views
0

Ich habe ein cardview und eine Schaltfläche in meiner content_main.xml, wenn der Benutzer die Taste drückt, sollte es das Fragment (genannt Radio-Fragment) zeigen, wenn ich das cardview immer noch zeige im Radio-Fragment (Fragment Name)Cardview wird auch im zweiten Fragment angezeigt

ich möchte die cardview und Taste verstecken und das Fragment zeigen, wenn der Benutzer die Taste drücken

hier meine Inhalte Haupt

ist
<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 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:id="@+id/Relative" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.hackerinside.jaisonjoseph.radioplanet.MainActivity" 
tools:showIn="@layout/activity_main"> 




<android.support.v7.widget.CardView 
    android:layout_width="350dp" 
    android:layout_height="100dp" 
    android:layout_marginTop="16dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    app:cardElevation="10dp" > 


</android.support.v7.widget.CardView> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

    </RelativeLayout> 

hier ist die fragment_radio.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.hackerinside.jaisonjoseph.radioplanet.Radio"> 

<WebView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/webView" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 


    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" /> 

<ProgressBar 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/progressBar" 
    android:animationResolution="@integer/abc_max_action_buttons" 
    android:clickable="false" 
    android:theme="@style/Base.Theme.AppCompat" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center" /> 

    </RelativeLayout> 

dies die Tastenfunktion in Haupttätigkeit ist

Button button=(Button)findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Radio radio=new Radio(); 
      android.support.v4.app.FragmentManager manager=getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.Relative, radio,radio.getTag()).commit(); 

     } 
    }); 
} 

jemand kann mir helfen?

Antwort

1

Die CardView und Button wird angezeigt, da beide über die RelativeLayout erhöht sind.

Wenn Sie also das Fragment auf RelativeLayout setzen, wird es unter diesen Ansichten platziert.

Eine Lösung wird sein, die cardview und button innerhalb eines Layouts abzudecken und das Layout auszublenden, wenn Fragment angezeigt wird, und es auf dem umgekehrten Prozess einblenden.

+0

Button wird nicht im Fragment angezeigt, nur cardview –

+0

ok. Ich denke, wenn Sie auf Android-Version> 5.0 laufen, werden beide sichtbar – arjun

+0

Nun, was zu tun ist, wenn ich die Sichtbarkeit gegangen Option in der Tastenfunktion hinzufügen .. ist das in Ordnung? –

3

Verwenden FrameLayout als Wurzel Layout wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.hackerinside.jaisonjoseph.radioplanet.Radio"> 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" /> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center" 
     android:animationResolution="@integer/abc_max_action_buttons" 
     android:clickable="false" 
     android:theme="@style/Base.Theme.AppCompat" /> 
</RelativeLayout> 
</FrameLayout> 

Und dann ersetzen Sie Fragment mit dieser ID: R.id.container

+0

Nein sehe meine Haupttätigkeit Java-Code, ich ersetzte das Gesamtlayout content_main ich nannte als relativ –

+0

Dann verwenden Sie FrameLayout als root-Layout und setzen Sie Ihre RelativeLayout darin.Und verwenden Sie FrameLayout als Container – Shruti

+0

Arbeiten aber Apbar ist weg, wurde Vollbild –

1

Versuchen Sie, einen Hintergrund zu Ihrem Relativelayout:

<RelativeLayout 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:id="@+id/Relative" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="?android:windowBackground" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.hackerinside.jaisonjoseph.radioplanet.MainActivity" 
tools:showIn="@layout/activity_main"> 

wenn das nicht funktioniert; Versuch:

manager.beginTransaction().replace(android.R.id.content, radio,radio.getTag()).commit(); 

android.R.id.content Sie das Wurzelelement einer Ansicht gibt,

+0

Es funktioniert aber, die App-Leiste ist nicht da im zweiten Fragment –

+0

Sie versuchen, welche Option? und es ist App-Leiste ist in 'RealtiveLayout' – rafsanahmad007

+0

Es wird Vollbild, wenn ich Android.r.id.content verwenden –

1

Wie andere haben darauf hingewiesen, Sie ersetzen nicht die Ansichten innerhalb des Behälters. Die Dokumentation für replace() sagt:

ein vorhandenes Fragment ersetzen, die in einen Behälter gegeben wurde. Dies entspricht im Wesentlichen dem Aufruf von remove(Fragment) für alle aktuell hinzugefügten Fragmente, die mit derselben containerViewId und dann add(int, Fragment, String) mit den gleichen hier angegebenen Argumenten hinzugefügt wurden.

Ich glaube nicht, dass es ein vorhandenes Fragment gibt, das Sie ersetzen. Sie können dies umgehen, indem Sie entweder die CardView und die Button ausblenden oder einen Hintergrund auf Ihrem Fragment sollte auch funktionieren.

Verwandte Themen