在我的应用程序中,我有单个活动和所有其他片段
我正在设置style.xml的活动背景,如下所示
<item name="android:windowBackground">@color/very_light_gray</item>
现在只有一个特殊的片段,我想设置背景透明,我无法做到这一点尝试下面的片段代码不适合我
@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);
}
知道该怎么做吗?
答案 0 :(得分:1)
在样式应用
中使用null作为颜色 <item name="android:windowBackground">null</item>
答案 1 :(得分:1)
创建一个回调并在Acitvity中实现它
interface OnFragmentDisplay{
onFragmentDisplay();
}
当此片段显示时,将活动背景更新为透明..或在活动中将其设置为主题
你试过这个吗?fragment.getView().setBackgroundColor(Color.WHITE);
答案 2 :(得分:1)
这不是完美的解决方案,但可以解决问题
使用Fragment
代替使用DialogFragment
//exploreCategory is argument
class MyFragment(val exploreCategory: ExploreCategory) : DialogFragment() {
override fun onStart() {
super.onStart()
setWindowParams()
}
private fun setWindowParams(){
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog?.window?.setLayout(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
}
}
其余代码与您在片段中编写的代码相同
要在片段中的以下代码中显示使用,如果在活动中显示,则使用fragmentManager
MyFragment(exploreCategory).show(childFragmentManager,null)
//exploreCategory is argument, you can choose to send no arguments
答案 3 :(得分:0)
您只需在代码下方设置布局片段的背景:
gcloud firebase test android run .... --device model=${DEVICE_MODEL}
答案 4 :(得分:0)
两个步骤:
第一步 - 创建一个透明背景的视图(在XML文件中)。
在android studio中,找到&#34; res
&#34;文件夹,右键单击它,new -> android resource file
。比在出现的对话框中放置:
File name:
{放在这里。例如 - &#34; my_fragment &#34; (没有引号)}注意只有小写字母,数字和下划线可以
Resource type:
布局
Root element:
LinearLayout (您可以在学习更好地了解XML布局之后再将其他任何内容放在此处)
Source set:
主要
Directory name:
布局。
在出现的窗口中切换到&#34; text&#34;模式而不是&#34;设计&#34; (查看屏幕左下方的标签页。)
复制粘贴此内容而不是文件的内容(它非常相似,我们只需在此添加&#34;透明&#34;背景):
<?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>
第二步 - 在片段中展开此布局。
创建扩展Fragment的片段类并覆盖onCreateView()方法,在该方法中为视图充气并返回它:
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;
}
当然,不要忘记在活动中创建片段的实例!
答案 5 :(得分:0)
您必须将活动设置为透明。
android:background="@android:color/transparent"
由于您的活动有@color/very_light_gray
,即使您将片段设置为@android:color/transparent
,它也无效。
每个视图必须具有透明背景以避免重叠。
答案 6 :(得分:0)
您的活动容器布局背景应该是透明的。然后为Fragment的布局设置背景颜色。对于特定片段的布局,设置透明色以获得所需的场景。
答案 7 :(得分:0)
在实例化片段时,您可以在活动中使用类似下面的代码。代替Color.White,您可以使用自己的颜色。
fragment.getView().setBackgroundColor(Color.WHITE);
答案 8 :(得分:0)
简单的方法是为特定片段的根布局设置背景颜色,如下所示
机器人:背景= “@机器人:彩色/透明”
答案 9 :(得分:0)
所以,假设您希望活动和片段对特定片段是透明的(如果这是您想要的问题,那就不太清楚了,但我会假设它是) ..你需要设置&#34;主机&#34;活动背景透明时透明&#34;透明&#34;片段附加到它。当任何其他片段附加到它时,您将需要重置活动背景或它将保持透明..
有几种方法可以做到这一点,但我会选择一些东西&#34;公平&#34;简单的:
透明片段中的:
@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));
}
不完全确定这是否是你想要的效果。
祝你好运。 亲切的问候, CJ答案 10 :(得分:0)
在代码中添加此单行
getActivity().getWindow().setBackgroundDrawableResource(R.drawable.my_drawable);
答案 11 :(得分:0)
将您的活动布局样式设置为
<style name="RootLayout" parent="AppTheme">
<item name="android:background">@drawable/app_transparent_background</item>
</style>
并将其设置为活动的父布局
<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"
...>
在其他想要设置白色或其他彩色背景的片段中,在这些片段的主要布局中设置不同的样式。
它会起作用