![](/img/trans.png)
[英]FragmentNavigator add Fragment instead of replace for transparent background
[英]Fragment has default white background on replace() instead of transparent one
我在使用片段时遇到一个奇怪的问题,只是想不通。
当我在 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>
主文件
<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 中分配的背景?
您可以将以下属性用于所有根布局、视图、片段、容器等:
android:background="@android:color/transparent"
如果您只想显示活动的背景,则所有视图都应该是透明的。
为此,您必须为MainActivity
背景之外的每个视图设置android:background="@android:color/transparent"
。 即背景
Fragment
View
sListView
ListView
的项目/孩子等。简而言之,每个视图都必须具有透明背景,以便活动的背景不会重叠并且对用户可见。
在 xml 中使用它:
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00E6CECE" android:id="@+id/fragment_container" />
在java中使用这个:
findViewById(R.id.fragment_container).setBackgroundColor(Color.WHITE);
太简单了,只需将背景设置为#00000000
。
或者转到设计选项卡并将背景设置为#00000000
。
将您的背景设置为空或颜色/透明:
android:background="@null"
或者
android:background="@android:color/transparent"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.