一次更改文字大小和颜色?

时间:2013-01-01 07:14:58

标签: android textview android-alertdialog

我在我的应用中创建了许多活动和课程。但是我有一个功能来改变每个活动的字体大小和颜色。此功能更改自己活动中的文本。当我去其他活动时,我必须再次更改textSize和颜色。如何创建一个函数来一次性更改许多类和活动中的TextView?

我的应用结构:

Main.java   main.xml/
Suad1.java  suad1.xml/
Suad2.java  suad2.xml/
Suad3.java  suad3.xml/
Suad4.java  suad4.xml/

我想一次更改这些活动。这是我在Suad1.class中的代码。

public void ShowDialog() {
    final AlertDialog.Builder popDialog = new AlertDialog.Builder(this);
    final SeekBar seek = new SeekBar(this);
    seek.getProgress();
    seek.setMax(100);

    popDialog.setIcon(R.drawable.conp);
    popDialog.setTitle(R.string.menu_settings);
    popDialog.setView(seek);
    try {

        seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub
            }

            public void onStopTrackingTouch(SeekBar seekBar) {
                 // TODO Auto-generated method stub
            }

            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                subtitles.setTextSize(progress);
            }
        });
    }
    catch (Exception e) {
        e.printStackTrace();
    }

    popDialog.setSingleChoiceItems(items , -1,
        new DialogInterface.OnClickListener() {
            int i;
            public void onClick(DialogInterface dialog, int item) {
                i = item;
                if(items[i] =="Blue") {
                    subtitles.setTextColor(getResources().getColor(R.color.font3));
                } else if(items[i] == "Yellow") {
                    subtitles.setTextColor(getResources().getColor(R.color.font1));
                } else if(items[i]== "Red") {
                    subtitles.setTextColor(getResources().getColor(R.color.font2));
                }
            }
        }
    );

    // Button
    popDialog.setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(Suad1.this, "Your setting is complete", Toast.LENGTH_LONG).show();
                dialog.dismiss();
            }
        }
    );
    popDialog.create();
    popDialog.show();
}

还有两个问题:

  1. 我可以在退出对话框时再次更新SeekBar吗?
  2. 我可以在一个AlertDialog中使用两个或更多标题吗?

4 个答案:

答案 0 :(得分:1)

使用方法创建一个单独的类,您可以在多个活动中使用它来更改TextView文本,颜色:

public class ChangetextAttr {


public Activity context;

public ChangetextAttr(Activity context){

        this.context=context;
}

// Create an Method for Changing TextView Attributes

public void settextViewAttr(Activity activity, TextView txtView){

   txtView.setTextSize(15);
   txtView.setTextColor(activity.getResources().getColor(R.color.font1));
   //....
}

从Any Activity中可以设置textViewAttr方法来设置TextView属性:

   ChangetextAttr obj=new ChangetextAttr(Your_Activity.this);
   obj.settextViewAttr(this,any_textview_instance);

答案 1 :(得分:0)

嘿,创建一个(自定义textview)类,它扩展TextView并为textview做任何你想做的事情,比如改变文本颜色和textstyle。现在在你的所有xml中使用这个类。如果您的类名为MyTextView。那么你的xml应该如下......

   <urpackage.MyTextView
    android:id="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

答案 2 :(得分:0)

Android 通过样式主题为您提供了改变小部件外观的机制。

以下是定义样式的方式,该样式设置包含文本的任何视图的文本大小和颜色:

<style name="BigColoredText">
    <item name="android:textColor">#FF0000</item>
    <item name="android:textSize">25sp</item>
</style>

以下是将其应用于TextView的方式:

<TextView style="@style/BigColoredText" .../>

样式只能在施工时提供给View,之后您无法更改。但是,您可以通过以下方式以编程方式更改textAppearance,并将其作为引用text属性的样式的子集:

TextView v = ...;
v.setTextAppearance(R.styles.BigColoredText);

现在,如果您希望活动应用中的所有 TextView使用相同的样式(或至少使用默认情况下),那么你需要一个主题

<style name="Theme.MyTheme" parent="@android:style/Theme">
    <item name="android:textViewStyle">@style/BigColoredText</item>
</style>

然后将主题应用于清单中的整个应用程序或一个或多个活动

<application or activity android:theme="@style/Theme.MyTheme" .../>

或者您可以通过以下方式在运行时以编程方式更改它:

Activity activity = ...;
activity.setTheme(R.style.Theme_MyTheme);

答案 3 :(得分:0)

回答你的问题:

1-您需要的是两种样式(粗体和正常),并使用View.setTextAppearance在文本的使用样式之间进行更改。检查Android documentaion和此answer

2-要更新搜索栏,其值从“查看到视图”保持不变,则需要将其进度保持在共享首选项中,例如:并在onResume中设置进度。

3-考虑使用自定义Dialog(您可以根据需要在XML中定义它)。或者您可以包含/n以在标题字符串

中包含多行