gpt4 book ai didi

android - 以编程方式创建 View 后添加样式

转载 作者:太空狗 更新时间:2023-10-29 15:46:02 26 4
gpt4 key购买 nike

希望标题说明了一切。

1) 我以编程方式创建 View :

RelativeLayout rl = new RelativeLayout(this);

2) 我想将它添加到现有的 LinearLayout,然后我想将样式添加到 RelativeLayout。像这样的东西:

LinearLayout ll = (LinearLayout) findViewById(R.id.MyLinearLayout);
RelativeLayout rl = new RelativeLayout(this);
ll.addView(rl);
//add Style to rl here

我找不到办法做到这一点!

我知道可以通过编程方式添加样式。像这样的东西:

RelativeLayout rl = new RelativeLayout(this, null, R.style.MyRelativeLayout);

但这会在我将相对布局添加到线性布局之前添加样式。因此 relativelayout 不是“打印”的,因为在我将它添加到 linearlayout 之前他怎么知道 linearlayout 是他的父级。

在创建此 View 并将其添加到父 View 后,有人知道如何以编程方式将样式添加到 View 吗?

希望你明白我的意思。

最佳答案

您不能在构建 View 后应用样式。执行此操作的正确方法是在 Android 5.0+ 上使用 4 参数构造函数或创建引用您的样式的主题属性并使用 3 参数构造函数。

// Works on versions prior to Android 5.0
RelativeLayout rl = new RelativeLayout(this, null, R.attr.myRelativeLayoutStyle);

// Works on Android 5.0 and above
RelativeLayout r2 = new RelativeLayout(this, null, 0, R.style.MyRelativeLayout);

res/values/attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myRelativeLayoutStyle" format="reference" />
...

res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyRelativeLayout">
...
</style>
...

res/values/themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyAppTheme" parent="...">
<item name="myRelativeLayoutStyle">@style/MyRelativeLayout</item>
...

关于android - 以编程方式创建 View 后添加样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820452/

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