【发布时间】: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