我的活动中有以下代码:
......
DataCell[i] = new TextView(context,null,R.style.TitleRow);
DataCell[i].setText(data[i]);
......
这是我的style.xml文件,位于res>> values文件夹:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TitleRow" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#A0A0A0</item>
<item name="android:layout_marginTop">5dp</item>
<item name="android:layout_marginBottom">5dp</item>
<item name="android:paddingLeft">2dp</item>
<item name="android:paddingRight">2dp</item>
</style>
</resources>
没有显示任何值..
但如果我使用DataCell[i] = new TextView(context)
,它的工作正常。我知道我对属性集使用null这一事实存在一些问题。但经过长时间的搜索,我无法找到一个如何做到的完美例子。我希望有人可以一劳永逸地向我澄清这一点。
答案 0 :(得分:3)
尝试给TextView充气。像这样:
布局/ cell_row.xml
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/TitleRow">
YourActivity.java
......
LayoutInflater inflater = getLayoutInflater(); // called from activity
......
DataCell[i] = inflater.inflate(R.layout.cell_row, null);
// or inflater.inflate(R.layout.cell_row, root, false); where root is a parent view for created TexView
DataCell[i].setText(data[i]);
......
答案 1 :(得分:2)
我通常最终会创建一个简单的布局文件,其中只包含我要实例化的元素(在你的情况下是TextView),它具有适当的样式并使用布局inflater为我创建实例。
布局文件:styled_textview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView ... style="@+style/MyStyle" ... />
代码:
activity.getLayoutInflater().inflate(R.layout.styled_textview, <root_node>, true);