gpt4 book ai didi

android - 不同的微调器样式有不同的 dropDownListViewStyles

转载 作者:行者123 更新时间:2023-11-29 17:57:35 25 4
gpt4 key购买 nike

在我的应用程序主题中,我为整个应用程序设置了 dropDownListViewStylespinnerStyle。但是在一个 fragment 中,我需要带有自定义样式的微调器 dropDownListViewStyle (我需要更改分隔线)。是否可以在主题中设置其他 dropDownListViewStyle 的微调器?

在微调样式或布局中无法设置下拉分隔线。也无法在微调器样式或布局中设置 dropDownListViewStyle。

我真的很困惑,希望有人能回答。

最佳答案

不幸的是,dropDownListViewStyleSpinner 中被硬编码。如果查看源代码,您会发现 DropdownPopup 类,它扩展了 ListPopupWindow。在 ListPopupWindow 中,感兴趣的类是 DropDownListView,您可以在其中找到构造函数:

public DropDownListView(Context context, boolean hijackFocus) {
super(context, null, com.android.internal.R.attr.dropDownListViewStyle);
// ...
}

因此,正如您所评估的那样,改变这一点的唯一方法是通过主题。考虑到有问题的 Spinner 正在需要基本主题的 Activity 中使用,我只知道一种解决方法。不幸的是,唯一的方法是更改​​ Fragment 的主题。这意味着该 Fragment 中的所有 Spinners 将具有替代主题。要在运行时更改 Fragment 的主题,请在 onCreateView 中执行以下操作:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// create ContextThemeWrapper from the original Activity Context with the custom theme
Context context = new ContextThemeWrapper(getActivity(), R.style.My_Custom_Theme);
// clone the inflater using the ContextThemeWrapper
LayoutInflater localInflater = inflater.cloneInContext(context);
// inflate using the cloned inflater, not the passed in default
return localInflater.inflate(R.layout.my_layout, container, false);
}

除此之外,您正在考虑创建一个自定义 Spinner,这不是困难,因为它是开源的。

关于android - 不同的微调器样式有不同的 dropDownListViewStyles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com