标题说明了一切,希望如此。
1)我以编程方式创建了一个View:
RelativeLayout rl = new RelativeLayout(this);
2)我想将它添加到现有的LinearLayout,之后我想将一个Style添加到RelativeLayout。类似的东西:
LinearLayout ll = (LinearLayout) findViewById(R.id.MyLinearLayout);
RelativeLayout rl = new RelativeLayout(this);
ll.addView(rl);
//add Style to rl here
我找不到办法做到这一点!
我知道有办法以编程方式添加Style。类似的东西:
RelativeLayout rl = new RelativeLayout(this, null, R.style.MyRelativeLayout);
但是在我将relativelayout添加到linearlayout之前,这将添加样式。 因此,relativelayout不是“打印”的,因为在我将它添加到linearlayout之前,他应该怎么知道linearlayout是他的父级。
在创建此视图并将其添加到父视图后,是否有人能够以编程方式将样式添加到视图中?
希望你理解我的意思。
答案 0 :(得分:9)
构建视图后无法应用样式。正确的方法是在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 /值/ attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myRelativeLayoutStyle" format="reference" />
...
RES /值/ styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyRelativeLayout">
...
</style>
...
RES /值/的themes.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyAppTheme" parent="...">
<item name="myRelativeLayoutStyle">@style/MyRelativeLayout</item>
...