0

我在我的应用程序中创建了许多活动和课程。但是,我有一个功能可以在每个活动中更改字体大小和颜色。此函数更改自己活动中的文本。当我去其他活动时,我必须再次更改 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

4 回答 4

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));
   //....
}

并从任何活动中,您可以 settextViewAttr 方法设置 TextView 属性:

   ChangetextAttr obj=new ChangetextAttr(Your_Activity.this);
   obj.settextViewAttr(this,any_textview_instance);
于 2013-01-01T07:28:14.620 回答
0

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

   <urpackage.MyTextView
    android:id="@+id/text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />
于 2013-01-01T07:23:52.567 回答
0

Android已经为您提供了通过StylesThemes更改小部件外观的机制。

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

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

以下是您将其应用于 a 的方法TextView

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

样式只能View在构建时提供给 s,之后不能更改。但是,您可以通过以下方式以编程方式更改textAppearancewith 是引用text属性的样式的子集:

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

现在,如果您希望ActivityApplication中的所有 TextViews使用相同的样式(或至少默认使用它),那么您需要一个Theme

<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);
于 2013-01-01T07:35:58.107 回答
0

要回答您的问题:

1-您需要的是两种样式(粗体和正常),并在使用View.setTextAppearance. 检查 Android文档和这个答案

2-要使用从视图到视图未更改的值更新搜索栏,那么您需要将其进度保持在共享偏好中,例如并在 onResume 中设置进度。

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

于 2013-01-01T07:36:56.293 回答