gpt4 book ai didi

android - 添加到 Layout 的 View 继承父级的样式

转载 作者:行者123 更新时间:2023-11-29 20:54:45 26 4
gpt4 key购买 nike

我正在重用一个自定义的 InputDialog,它 extends DialogFragment 并在 EditInputDialog 上添加一个 Delete 按钮这工作正常,但现在我正在尝试使用样式并发现了这个古怪的小问题:

delete button

我希望 Delete 按钮使用按钮的默认设备样式

这是布局的简单样式 (/res/values/styles.xml):

<style name="myBackgroundStyle" parent="@android:style/Theme.Dialog">
<item name="android:background">#FF0000</item>
</style>

这是我创建和添加按钮的方式:

Button btnDelete = new Button(getActivity());
btnDelete.setText("Delete");
RelativeLayout rl = (RelativeLayout)view.findViewById(R.id.inputLayout);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.RIGHT_OF, R.id.btnSave);
lp.addRule(RelativeLayout.ALIGN_BASELINE, R.id.btnSave);
btnDelete.setLayoutParams(lp);
rl.addView(btnDelete);

我也试过在创建按钮时应用样式,例如:

new Button(getActivity(),null,android.R.attr.buttonStyle); 

.buttonStyle 不是我唯一尝试过的

但是一点用都没有。有没有我遗漏的东西,或者这是怎么回事?

这种风格不是我最终要采用的风格,这只是为了测试,然后我遇到了这个问题。

最佳答案

您需要向按钮提供对话框的上下文而不是 Activity 上下文,以便它可以检索正确的主题(Dialog 基类使用 ContextThemeWrapper 来包装 Activity 上下文,同时提供它自己的主题)。

getDialog().getContext() 替换传递给按钮构造函数的 getActivity() 应该可以解决这个问题。请注意,传递给 onCreateView() 回调的 LayoutInflater 已使用正确的上下文进行初始化,您也可以通过调用 inflater.getContext 从那里检索它()

关于android - 添加到 Layout 的 View 继承父级的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091024/

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