动态改变字体样式

发布于 2025-01-04 01:47:23 字数 1109 浏览 0 评论 0原文

这是我的代码(已编辑):

public class Main extends Activity
{

TextView txt;

@Override
public void onCreate(Bundle savedInstanceState) 
{       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  

    Button b=(Button) findViewById(R.id.button1);
      txt = (TextView) findViewById(R.id.textView1);   

      b.setOnClickListener(new Button.OnClickListener() 
      {

         public void onClick(View v) 
         {
             Intent intent= new Intent(Main.this,Preference.class);
             startActivity(intent);
         }
      });

}     

public void onResume()
{
    super.onResume();
    Toast.makeText(this, "onResume", Toast.LENGTH_LONG).show();
    SharedPreferences myPreference=PreferenceManager.getDefaultSharedPreferences(this);
    boolean first=myPreference.getBoolean("first", true);
    if(first)
    {

     Typeface font=Typeface.MONOSPACE;
     txt.setTypeface(font);
    }   
}

}

在 main.xml 中,这里有一个 textview 需要更改文本样式。以前的问题需要重新启动应用程序才能使复选框首选项生效,现在不需要了。但问题是,当我取消选中复选框首选项时,它不会进入默认状态。是吗?任何人都可以帮助我代码有什么问题吗?

This is my code(Edited):

public class Main extends Activity
{

TextView txt;

@Override
public void onCreate(Bundle savedInstanceState) 
{       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  

    Button b=(Button) findViewById(R.id.button1);
      txt = (TextView) findViewById(R.id.textView1);   

      b.setOnClickListener(new Button.OnClickListener() 
      {

         public void onClick(View v) 
         {
             Intent intent= new Intent(Main.this,Preference.class);
             startActivity(intent);
         }
      });

}     

public void onResume()
{
    super.onResume();
    Toast.makeText(this, "onResume", Toast.LENGTH_LONG).show();
    SharedPreferences myPreference=PreferenceManager.getDefaultSharedPreferences(this);
    boolean first=myPreference.getBoolean("first", true);
    if(first)
    {

     Typeface font=Typeface.MONOSPACE;
     txt.setTypeface(font);
    }   
}

}

In main.xml ,Here there is textview whose text style is needed to be changed.The previous problem restarting the application to take effect check box preference is not needed now. But problem is that when i uncheck the checkbox preference its not going to its default state.Y so? Can any help me whats wrong in code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黎歌 2025-01-11 01:47:23

我认为您正在使用首选项来更改字体?

您选中一个复选框并期望字体根据是否选中而改变?

当您在更改首选项后返回到 Activity 时,这不会导致您的 onCreate() 方法运行,因为该 Activity 已存在于您的返回堆栈中并且只是重新显示。

您应该将字体更改代码放在 onResume() 方法中或使用 startActivityForResult 方法并在那里处理首选项的关闭。

更新:

if (first) {
     txt.setTypeface(Typeface.MONOSPACE);
} else {
     txt.setTypeface(Typeface.SERIF);
}

I think you are using preferences to change a font?

You check a box and expect a font to change based on whether it is checked or not?

When you return to your activity after changing the preference this does not cause your onCreate() method to run as the activity already exists on your back stack and is simply being re-displayed.

You should put the font change code in the onResume() method or use the startActivityForResult method and handle the closing of preferences there.

Update:

if (first) {
     txt.setTypeface(Typeface.MONOSPACE);
} else {
     txt.setTypeface(Typeface.SERIF);
}
孤独患者 2025-01-11 01:47:23

尝试调用 txt.requestLayout()。这将重新绘制视图。

Try calling txt.requestLayout(). This will repaint the view.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文