动态添加后的Textview样式

时间:2012-09-19 12:18:59

标签: android styles textview

我的问题是如何在动态添加后设置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)之后尝试了这段代码;在它之前是一样的并不会改变一件事。

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

3 个答案:

答案 0 :(得分:3)

样式不会更改,因为虽然在将样式添加到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);

答案 1 :(得分:1)

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

所以选择:

# instead of returning serializer data instantly:
# return Response(serializer.data)
res = {'data': serializer.data, 'pages_count': paginator.num_pages()}
return Response(res)

答案 2 :(得分:0)

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

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

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做同样的事情。