webentwicklung-frage-antwort-db.com.de

Android stellte transparenten Hintergrund für ein Fragment ein

In meiner App habe ich eine einzige Aktivität und alle anderen Fragmente

Ich setze den Hintergrund für die Aktivität von style.xml wie folgt

<item name="Android:windowBackground">@color/very_light_gray</item>

Nun, nur für ein bestimmtes Fragment möchte ich den Hintergrund transparent setzen und ich bin nicht in der Lage, das zu versuchen, wenn der folgende Code in Fragment nicht funktioniert hat

  @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

// create ContextThemeWrapper from the original Activity Context with the custom theme
final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme);

// clone the inflater using the ContextThemeWrapper
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);

// inflate the layout using the cloned inflater, not default inflater
return localInflater.inflate(R.layout.yourLayout, container, false);
}

Irgendeine Idee, wie es geht?

8
amodkanthe

verwenden Sie Null für Farbe in Style-App

 <item name="Android:windowBackground">null</item>
1
Rasoul Miri

erstellen Sie einen Rückruf und implementieren Sie ihn in Acitvity 

interface OnFragmentDisplay{
  onFragmentDisplay();
}

wenn dieses Fragment angezeigt wird, aktualisieren Sie den Aktivitätshintergrund auf transparent

Siehe dieser Link und dies kann helfen

hast du das probiert

fragment.getView().setBackgroundColor(Color.WHITE);
1
Xar E Ahmer

zwei schritte:

Erster Schritt - Erstellen Sie eine Ansicht (in einer XML-Datei) mit transparentem Hintergrund.

suchen Sie im Android Studio nach dem Ordner "res", klicken Sie mit der rechten Maustaste darauf, new -> Android resource file. Dann in den erscheinenden Dialog setzen:

File name: {hier etwas setzen. zum Beispiel - " my_fragment " (ohne Anführungszeichen)} Beachten Sie, dass nur Kleinbuchstaben, Ziffern und Unterstriche in Ordnung sind

Resource type: Layout

Root element: LinearLayout (Sie können hier alles andere eingeben, nachdem Sie XML-Layouts besser kennen gelernt haben.)

Source set: haupt

Directory name: layout.

In dem erscheinenden Fenster wechseln Sie in den Modus "Text" anstelle von "Design" (suchen Sie nach den Registerkarten links unten auf dem Bildschirm).

dann kopieren und fügen Sie dies anstelle des Inhalts der Datei ein (es ist sehr ähnlich, wir fügen hier nur den "transparenten" Hintergrund hinzu):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical" 
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@Android:color/transparent"
    >

</LinearLayout>

Zweiter Schritt - blase dieses Layout in deinem Fragment auf.

erstellen Sie Ihre Fragment-Klasse, die Fragment erweitert, und überschreiben Sie die Methode onCreateView (). Blenden Sie in dieser Methode Ihre Ansicht auf und geben Sie sie zurück:

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    // assuming you named your xml file "my_fragment":
    // for other names replace R.layout.my_fragment with  R.layout.put_your_name_here
    View view = inflater.inflate(R.layout.my_fragment, container, false);
    return view;
}

vergiss natürlich nicht, eine Instanz deines Fragments in der Aktivität zu erstellen!

0
Re'em

Sie müssen Ihre Aktivität auch transparent einstellen.

Android:background="@Android:color/transparent"

Da Ihre Aktivität @color/very_light_gray hat, funktioniert das Fragment selbst nicht, wenn Sie @Android:color/transparent einstellen.

Jede Ansicht muss einen transparenten Hintergrund haben, um Überlappungen zu vermeiden.

0
Gokul Nath KP

Angenommen, Sie möchten, dass die Aktivität und das Fragment für ein bestimmtes Fragment transparent sind (Es ist nicht ganz klar, ob Sie dies von Ihrer Frage erwarten, aber ich gehe davon aus, dass dies der Fall ist) "Aktivitätshintergrund transparent, wenn das" transparente "Fragment daran angehängt ist. Wenn ein anderes Fragment an das Fragment angehängt wird, müssen Sie den Aktivitätshintergrund zurücksetzen, da es sonst transparent bleibt.

Es gibt einige Möglichkeiten, dies zu tun, aber ich werde etwas "ziemlich" direktes suchen:

in deinem transparenten Fragment:

      @Override
      public void onStart() {
        super.onStart();
// I'm using null here because drawing nothing is faster than drawing transparent pixels.
        getActivity().getWindow().setBackgroundDrawable(null);
        getView().setBackground(null);
      }

      @Override
      public void onStop() {
        super.onStop();
        getActivity().getWindow().setBackgroundDrawable(new ColorDrawable(@color/very_light_gray));
     }

Nicht ganz sicher, ob dies der gewünschte Effekt ist.

Viel Glück. Mit freundlichen Grüßen CJ

0
C James

Eine einfache Möglichkeit ist, die Hintergrundfarbe für das Stammlayout dieses bestimmten Fragments wie folgt festzulegen

Android: Hintergrund = "@ Android: Farbe/transparent"

0
Uma Achanta

Sie haben nur den Hintergrund für das Layoutfragment unter dem Code festgelegt:

<LinearLayout
...
Android:background="@Android:color/transparent"/>
0
nhonnq

Der Layout-Hintergrund Ihres Aktivitätscontainers sollte transparent sein. Legen Sie dann die Hintergrundfarbe für die Layouts von Fragment fest. Legen Sie für ein bestimmtes Fragment-Layout die transparente Farbe fest, um die erforderlichen Szenarien zu erhalten. 

0
Zia

Sie können so etwas wie den folgenden Code in Ihrer Aktivität verwenden, während Sie das Fragment instanziieren. Anstelle von Color.White können Sie Ihre eigene Farbe verwenden.

fragment.getView().setBackgroundColor(Color.WHITE);
0
Tony

Fügen Sie diese einzelne Zeile in Ihren Code ein 

getActivity().getWindow().setBackgroundDrawableResource(R.drawable.my_drawable);
0
Nik

Legen Sie den Stil Ihres Aktivitätslayouts als fest 

<style name="RootLayout" parent="AppTheme">
    <item name="Android:background">@drawable/app_transparent_background</item>
</style>

und legen Sie es im übergeordneten Layout der Aktivität als fest 

<LinearLayout
    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"
    style="@style/RootLayout"
    ...>

in anderen Fragmenten, für die Sie einen weißen oder einen anderen farbigen Hintergrund festlegen möchten, legen Sie einen anderen Stil im Hauptlayout des Fragments fest. 

Es wird klappen

0
Chintak Patel