1

我的问题是如何在动态添加后设置 textView 样式。

这是代码:

LinearLayout layout = (LinearLayout)findViewById(R.id.linarLay);
TextView textView = new TextView(this);
textView.setText("TEST1");        
layout.addView(textView);

我可以看到已添加的文本视图,但是.. 我现在需要对其进行样式设置.. 到目前为止,我尝试了这个:

textView.setTextAppearance(getApplicationContext(),R.style.textStyle);

我在 layout.addView(textView); 之后尝试了这段代码 在它完全一样之前不会改变任何事情..

任何想法/解决方案将不胜感激......谢谢

4

3 回答 3

4

样式不会改变,因为尽管您TextView在添加后使用相同的对象设置样式Layout,但它不是布局的一部分。您必须使用其 id 从布局中获取View添加,并且当您更改其样式时,它将直接影响您对Layout.

试试这个:(我没有测试过,但*应该可以)

LinearLayout layout = (LinearLayout)findViewById(R.id.linarLay);
TextView textView = new TextView(this);
textView.setText("TEST1");
textView.setId(999);      // give some id  
layout.addView(textView);

TextView tv=(TextView)findViewById(999);
tv.setTextAppearance(getApplicationContext(),R.style.textStyle);
于 2012-09-19T13:19:15.030 回答
2

我有一个类似的问题。我想用一个按钮做同样的事情。您可以以编程方式设置每个属性。

您可以使用一组方法创建一个类,如下所示:

private void setButtonStyle(Button b, String text)
{
    LayoutParams param = new LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT, 1.0f);

    b.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.blue_button));
    b.setGravity(Gravity.CENTER);
    b.setText(text);
    b.setLayoutParams(param);
    b.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
    b.setTypeface(null, Typeface.BOLD);
    b.setShadowLayer(2, 1, 1, R.color.button_shadow_colour);
    b.setTextColor(context.getResources().getColor(R.color.button_text_colour));
}

如您所见,可以设置所需的一切。例如,param 变量在其构造函数中有 3 个参数,它们是 layout_width、layout_height 和 weight。所以你可以对 TextView 做同样的事情。

于 2012-09-19T12:48:30.687 回答
2

自 API 23 起已弃用: textView.setTextAppearance(getContext(), R.style.Headline);

所以选择:

 textView.setTextAppearance(R.style.Headline); 
于 2017-06-03T11:43:05.240 回答