我的问题是动态添加后如何设置文本视图样式。
这是代码:
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)之后尝试了这段代码;在它之前,它只是相同的不会改变任何事情。
任何想法/解决方案将不胜感激...谢谢
样式不会改变,因为尽管您在将样式添加到Layout
后使用相同的TextView
对象来设置样式,但它不是布局的一部分。您必须添加View
,从布局中使用其id,当您更改其样式时,它将直接影响您在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);
我也有类似的问题。我想用一个按钮做同样的事情。可以通过编程方式设置每个属性。
您可以使用一组方法创建一个类,如下所示:
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和权重。因此,您可以使用 TextView 执行相同的操作。
自 API 23 起已弃用: textView.setTextAppearance(getContext(), R.style.Headline);
所以选择:
textView.setTextAppearance(R.style.Headline);