我在我的应用中创建了许多活动和课程。但是我有一个功能来改变每个活动的字体大小和颜色。此功能更改自己活动中的文本。当我去其他活动时,我必须再次更改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();
}
还有两个问题:
答案 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
以在标题字符串