在代码中设置textview的样式,android

时间:2011-10-17 20:56:09

标签: android xml android-layout styles textview

我的活动中有以下代码:

......  
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这一事实存在一些问题。但经过长时间的搜索,我无法找到一个如何做到的完美例子。我希望有人可以一劳永逸地向我澄清这一点。

2 个答案:

答案 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);