Add Style after creating a View programmatically

前端 未结 1 1295
梦谈多话
梦谈多话 2021-01-06 18:26

The Title says it all, hopefully.

1) I create a View programmatically:

RelativeLayout rl = new RelativeLayout(this);

2) I want to a

相关标签:
1条回答
  • 2021-01-06 19:04

    You can't apply a style after constructing a view. The correct way to do this is to use the 4-argument constructor on Android 5.0+ or to create a theme attribute that references your style and use the 3-argument constructor.

    // 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>
            ...
    
    0 讨论(0)
提交回复
热议问题