Фрагмент имеет белый фон по умолчанию вместо replace() вместо прозрачного

Я столкнулся с какой-то странной проблемой при использовании фрагментов и просто не могу понять это.

Когда я заменяю фрагменты внутри контейнера MainActivity, некоторые будут сохранять желаемый прозрачный фон, а некоторые будут отображаться как белый. Я действительно хочу, чтобы все мои фрагменты были прозрачными и "использовали" фон, назначенный MainActivity.

Например: Фрагмент A: белый фон

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:src="@drawable/logo"/>

    <de.mypackage.uielements.MyButton
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:text="@string/button_text"/>    

    **<!-- ListView to show news -->**
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:dividerHeight="1dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="10dp"/>
</LinearLayout>

Фрагмент B: прозрачный фон

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

main.xml

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- Background Image to be set programmatically, transparent being default -->
    <ImageView
        android:id="@+id/window_background_image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:background="@android:color/transparent"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent">

        <!-- Top ScrollView -->
        <de.opwoco.app.android.apptitan.app.utils.HorizontalListView
            android:id="@+id/navigation_tab_listview"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:visibility="gone"
            android:background="@color/navigation_background"/>

        <!-- FrameLayout container where all other fragments are placed -->
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:layout_below="@+id/navigation_tab_listview"/>

    </RelativeLayout>

    <fragment
        android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="de.mypackage.fragment.NavigationDrawerFragment"
        tools:layout="@layout/fragment_navigation_drawer"/>

</android.support.v4.widget.DrawerLayout>

Оба фрагмента заменяются следующим фрагментом:

android.support.v4.app.FragmentTransaction transaction =     getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.commit();

Итак, мой вопрос:

Как я могу достичь того, что все фрагменты в моем контейнере имеют прозрачный фон, так что я всегда показываю фон, назначенный в MainActivity?

Ответ 1

вы можете использовать следующее свойство для всех корневых макетов, представлений, фрагментов, контейнеров и т.д.:

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

Если вы хотите отображать фон своей деятельности только тогда, все представления должны быть прозрачными.

Для этого вам нужно установить android:background="@android:color/transparent" для каждого вида, кроме backgroud MainActivity. фоном для

  • Fragment s
  • их ребенок View s
  • ListView (s)
  • и ListView items/childs и т.д.

Короче каждый вид должен иметь прозрачный фон, чтобы фон Актив не перекрывался и не был видимым пользователю.

Ответ 2

Это слишком просто, просто установите фон как #00000000.

Или перейдите на вкладку дизайна и установите фон #00000000.