0

我以编程方式创建了一个 textView。现在我需要以编程方式为这个 textview 分配一个样式。(不仅是 TextAppearance,还有左边距、填充等)。所有这些样式属性都在一个 xml 文件中定义。

TextView tv = new TextView(this);
4

5 回答 5

0

使用 layoutParams 设置动态创建的 textView 的边距。

TextView view1 = new TextView(this);

view1.setGravity(Gravity.RIGHT | Gravity.CENTER);

RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(

                       RelativeLayout.LayoutParams.WRAP_CONTENT,

                       RelativeLayout.LayoutParams.WRAP_CONTENT);

rlp.setMargins(10,10, 0, 0);
view1.setLayoutParams(rlp);
于 2013-04-01T09:02:04.570 回答
0

对于字体样式:textview.setTypeface(Typeface.DEFAULT_BOLD);

对于左边距和填充,您需要定义“布局参数”,例如

TextView tv = new TextView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(heightInPixels, widthInPixel);
tv.setLayoutParams(params);
tv.setMargins(10, 10, 10, 10);
yourLayout.addView(tv);
tv.setPadding(10, 10, 10, 10);
于 2013-04-01T09:02:12.497 回答
0

设置填充非常容易。但是保证金有点棘手。看看下面。

TextView tv = new TextView(this);
//setting padding left top right bottom
tv.setPadding(10, 10, 10, 10);
//setting left margin
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
tv.setLayoutParams(llp);
于 2013-04-01T08:56:28.583 回答
0
   LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
   tv.setLayoutParams(params); 
   tv.setPadding(left, top, right, bottom);
   left- padding to left
   top - padding to right
   right -padding to right
   bottom -padding to bottom 

有关更多样式,请查看下面的链接。请参阅 setter 方法。您可以设置文本大小、背景颜色等等。

http://developer.android.com/reference/android/widget/TextView.html

于 2013-04-01T08:56:58.577 回答
0

使用布局参数设置此属性。

TextView t = new TextView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(heightInPixels, widthInPixel);
params.setMargins(left, top, right, bot);
t.setLayoutParams(params);
mLinearLayout.addView(t);

编辑:

如果您在 attrs.xml 文件中定义了自己的样式,那么您必须制作自己的 Textview 并在构造函数中处理您想要的属性。它用于处理来自 XML 的属性。而对于java定义,你必须制作“set method”。

public class MyTextView extends TextView
{
   String _stringValue;

    public MyTextView(Context c)
    {
        this(c, null);
    }

    public MyTextView(Context c, AttributeSet attrs)
    {
        this(c, attrs, 0);
    }

    public MyTextView(Context c, AttributeSet attrs, int defStyle)
    {
            super(c, attrs, defStyle);
        TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.MyStyleAble);
        _stringValue = a.getString(R.styleable.MyStyleAble_stringValue);
        a.recycle(); //don't forget this line! 
    }

    public void setStringValue(String s)
    {
        _stringValue = s;
    } 
}

编辑

在这里使用 MyTextView 在代码中。只需使用标准构造函数创建它。

MyTextView t = new MyTextView(context);

然后设置你的风格值。在我的示例中,它是字符串值。

t.setStringValue("My string text");

然后使用 layoutParams。

t.setLayoutParams(params);

并将新创建的 TextView 添加到一些布局中。例如线性布局。

mLinearLayout.addView(t);

我忘了说,只有当您需要在 XML 文件中设置属性时,您才必须定义可样式化的 int attrs.xml。然后你像这样使用它。

<my.package.name.MyTextView
   xmlns:custom="http://schemas.android.com/apk/res/my.package.name"
   custom:stringValue="some string text"
   //and also you can use standart android:... attributes
/>
于 2013-04-01T08:57:35.630 回答