首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何以编程方式将样式应用于Textview

如何以编程方式将样式应用于Textview
EN

Stack Overflow用户
提问于 2013-04-01 16:51:33
回答 5查看 420关注 0票数 0

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

代码语言:javascript
代码运行次数:0
运行
复制
TextView tv = new TextView(this);
EN

回答 5

Stack Overflow用户

发布于 2013-04-01 16:56:29

设置填充非常简单。但利润率有点微不足道。请看下面的内容。

代码语言:javascript
代码运行次数: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);
票数 0
EN

Stack Overflow用户

发布于 2013-04-01 16:56:59

代码语言:javascript
代码运行次数: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

票数 0
EN

Stack Overflow用户

发布于 2013-04-01 16:57:36

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

代码语言:javascript
代码运行次数: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“。

代码语言:javascript
代码运行次数:0
运行
复制
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。只需使用标准构造函数创建它。

代码语言:javascript
代码运行次数:0
运行
复制
MyTextView t = new MyTextView(context);

然后设置可设置样式的值。在我的示例中,它是字符串值。

代码语言:javascript
代码运行次数:0
运行
复制
t.setStringValue("My string text");

然后使用layoutParams。

代码语言:javascript
代码运行次数:0
运行
复制
t.setLayoutParams(params);

并将新创建的TextView添加到某个布局中。例如LinearLayout。

代码语言:javascript
代码运行次数:0
运行
复制
mLinearLayout.addView(t);

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

代码语言:javascript
代码运行次数:0
运行
复制
<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
/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15740375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档