class BottomBarFragment : BottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val contextThemeWrapper = ContextThemeWrapper(getActivity(), R.style.Theme_BaseDarkTheme)
val localInflater = inflater.cloneInContext(contextThemeWrapper)
binding = FragmentBottomBarBinding.inflate(localInflater, container, false)
// tried setStyle also
setStyle(0, R.style.Theme_BaseDarkTheme)
}
}
样式
<style name="Theme.BaseDarkTheme" parent="Theme.AppCompat">
<item name="dividerColor">@color/divider_dark</item>
</style>
在片段对话框布局中
<LinearLayout
style="@style/llParent"
android:background="?attr/dividerColor"
>
因此,我的布局应为深色,但始终为浅色。我在做什么错了?
答案 0 :(得分:1)
setStyle()
的文档中说:
调用以自定义片段的基本外观和行为 对话。这可以用于一些常见的对话框行为,请小心 为您选择标志,主题和其他选项。效果一样 可以通过手动设置对话框和窗口属性来实现 你自己在创建片段的对话框后调用此命令 没有效果。
片段的对话框将在onCreate()
之后和onCreateView()
之前创建。
尝试从setStyle()
方法调用onCreate()
答案 1 :(得分:0)
基本上,如果您尝试使用名称为“ dialog”的东西,则应建立对话框。为此,有一种类似onCreateDialog()的方法。
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),your_style);
...
return builder.create();
}
否则,您应该只扩展一个Fragment,然后可以在其中调用onCreateView()这样的内容:
Context contextThemeWrapper = new ContextThemeWrapper(getActivity(),your_style);
LayoutInflater newInflater = inflater.cloneInContext(contextThemeWrapper);
View view = newInflater.inflate(your_layout,container,false);
对不起,Java代码,但是应该有类似的代码。