【问题标题】:Apply layout files to styles将布局文件应用于样式
【发布时间】:2015-01-30 10:51:28
【问题描述】:

所以在Android的资源中,你可以应用一个带有布局类型的item来指向一个特定的布局文件。这非常适合在不同设备上重复使用。但这如何应用于特定的样式?

<attr name="item_name" format="reference" />

<style name="AppTheme" parent="AppBaseTheme">
    <item name="item_name">@layout/layout_name</item>
</style>

像上面这样的东西是行不通的。当尝试将布局应用于 Activity 之类的东西时,它会产生一个膨胀错误。

编辑:

嗯,我自己想通了。这是如何完成的。

res/values/attr.xml

<attr name="item_name" format="reference" />

res/values/styles.xml

<style name="AppTheme" parent="AppBaseTheme">
    <item name="item_name">@layout/layout_name</item>
</style>

src/package.name/MyActivity.java

public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /*
         * Get the layout id from the attribute
         */
        TypedArray a = getTheme().obtainStyledAttributes(new int[]{R.attr.item_name});
        int layoutId = a.getResourceId(0, 0);
        a.recycle();

        /*
         * Set the layout
         */
        setContentView(layoutId);
    }
}

现在您可以通过切换样式/主题来切换整个布局文件。

【问题讨论】:

    标签: android android-layout android-resources android-styles


    【解决方案1】:

    这里我有自定义操作栏样式。你可以这样使用

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#de5188</item>
     <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
     <item name="android:subtitleTextStyle">@style/MyActionBarSubTitleText</item>
    

    <style name="MyActionBarTitleText"
           parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">#ffffff</item>
        <item name="android:textStyle">bold</item>
    

    希望这篇文章能帮到你:)

    【讨论】:

    • 是的,我知道这一点。但我想要的是基于正在使用的样式的整个布局文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2020-12-25
    相关资源
    最近更新 更多