如何动态地将AttributeSet添加到TextView?

时间:2015-08-12 13:53:16

标签: java android

我想在点击按钮时将"Foo"添加到表格中。所以这就是我在OnClickListener中所做的事情:

textView

我还想为此动态创建的todoTable.addView(new TextView(this)); 添加属性,如文本内容或背景。那我该怎么办? Android Studio说有一个像这样的构造函数

TextView

我可以在AttributeSet参数中包含哪些内容来为TextView提供值,例如“Hello World!”?

3 个答案:

答案 0 :(得分:4)

执行类似这样的操作,创建一个返回TextView的方法,您也可以设置文本。一种更简单的方法是仅创建文本视图布局,而只是重用它。 AttributeSet主要用于创建自定义视图并需要添加更多属性时。

public TextView createTextView(String text) {
    String attributes =
            "<attribute xmlns:android=\"http://schemas.android.com/apk/res/android\" " +
            "android:layout_width=\"match_parent\" android:layout_height=\"wrap_content\" android:padding=\"10dp\" " +
            "android:background=\"@drawable/list_selector_background\" android:clickable=\"true\" " +
            "android:textAppearance = \"@android:style/TextAppearance.Medium\" android:textColor = \"@color/text_colors\" " +
            "android:text=\"" + text +  "\" android:gravity = \"left\" " + "\"/>";

    XmlPullParserFactory factory = null;
    try {
        factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser parser = factory.newPullParser();
        parser.setInput(new StringReader(attributes));
        parser.next();
        AttributeSet attrs = Xml.asAttributeSet(parser);
        return new TextView(this, attrs);
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return new TextView(this);
}

答案 1 :(得分:0)

你可以这样做

 TextView tv = new TextView(getContext());
    tv.setText("text");
    FrameLayout.LayoutParams tP = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    tP.setMargins(1, 2, 3, 4);
    tP.gravity = (Gravity.CENTER | Gravity.TOP);
    tv.setLayoutParams(tP);

答案 2 :(得分:-3)

您可以将新的TextView设置为变量,然后使用“setText”方法:

TextView textView = new TextView(this);
textView.setText("Hello World!");

有许多方法可供使用,包括“setBackgroundResource”。在这里查看它们:http://developer.android.com/reference/android/widget/TextView.html