将布局文件应用于样式

时间:2015-01-30 10:51:29

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

因此,在Android的资源中,您可以应用具有类型布局的项目以指向特定的布局文件。这非常适合在不同设备上重复使用。但是如何将其应用于特定样式?

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

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

上述内容不起作用。尝试将布局应用于活动时会产生膨胀错误。

修改

我自己想通了。以下是这样做的方法。

RES /值/ attr.xml

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

RES /值/ 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);
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

<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>

我希望这个会帮助你:)。