Android 动态添加后的Textview样式

Android 动态添加后的Textview样式,android,styles,textview,Android,Styles,Textview,我的问题是如何在动态添加textView样式后设置它 代码如下: LinearLayout layout = (LinearLayout)findViewById(R.id.linarLay); TextView textView = new TextView(this); textView.setText("TEST1"); layout.addView(textView); 我可以看到已添加的文本视图,但。。我现在需要做个造型。。 到目前为止,我试过: textView.s

我的问题是如何在动态添加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.addViewtextView之后尝试了这段代码;在这之前,一切都不会改变


如有任何想法/解决方案,将不胜感激。。。谢谢

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

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

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执行相同的操作。

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

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

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执行相同的操作。

样式不会更改,因为在将同一TextView对象添加到布局后,虽然您使用同一个TextView对象来设置样式,但它不是布局的一部分。您必须使用其id从布局中添加视图,当您更改其样式时,它将直接影响到布局上的视图

试试这个:我还没有测试过,但应该可以

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);

样式不会更改,因为在将同一个TextView对象添加到布局后,虽然您使用同一个TextView对象来设置样式,但它不是布局的一部分。您必须使用其id从布局中添加视图,当您更改其样式时,它将直接影响到布局上的视图

试试这个:我还没有测试过,但应该可以

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);
自API 23以来已弃用: textView.setTextAppearancegetContext,R.style.Headline

因此,请选择:

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

因此,请选择:

 textView.setTextAppearance(R.style.Headline); 

问题是我将textView动态添加到线性布局中。。因此,我认为您的解决方案是选择按钮或textview findViewById或?问题是我将textview动态添加到线性布局。。因此,我认为您的解决方案是,如果您选择按钮或textview findViewById或?仍然没有更改。。您的解决方案非常好,但在这部分textViewFindViewByd999中,我认为它必须是R.id.999,但当我进行此更改时,它在编译之前找不到视图。编译后,我认为它无法通过textViewFindViewByd999找到视图。。有什么想法吗?@Ghostology:我在我的一个应用程序中实现了相同的代码,它运行得非常完美。它将通过id 999找到TextView。不会有任何问题。你试过实现它吗?出现任何错误?请尝试更改文本而不是样式。只是为了确保,它正在获取布局的文本视图。如果文本发生更改,则您的样式中一定存在问题。我制作了一个示例应用程序,并尝试了其工作的代码。。。但我恐怕它不需要android:background、android:layout\u width、android:layout\u height、android:layout\u margin和android:layout\u Left。。但真的很感谢。。感谢你的帮助。但我知道,通过调查,我看到了像电视、挫折和资源这样的东西,是的,你的答案是解决这个问题的完美办法。。谢谢!还是没有变化。。您的解决方案非常好,但在这部分textViewFindViewByd999中,我认为它必须是R.id.999,但当我进行此更改时,它在编译之前找不到视图。编译后,我认为它无法通过textViewFindViewByd999找到视图。。有什么想法吗?@Ghostology:我在我的一个应用程序中实现了相同的代码,它运行得非常完美。它将通过id 999找到TextView。不会有任何问题。你试过实现它吗?出现任何错误?请尝试更改文本而不是样式。只是为了确保,它正在获取布局的文本视图。如果文本发生更改,则您的样式中一定存在问题。我制作了一个示例应用程序,并尝试了其工作的代码。。。但我恐怕它不需要android:background、android:layout\u width、android:layout\u height、android:layout\u margin和android:layout\u Left。。但真的很感谢。。感谢你的帮助。但我知道,通过调查,我看到了像电视、挫折和资源这样的东西,是的,你的答案是解决这个问题的完美办法。。谢谢!