我们正在android中做聊天应用程序作为最后一年的项目和android的新功能。我希望在用户选择提供的选项时动态更改字体样式。因此使用共享偏好和无效功能来重绘GUI。以下是我的代码片段 包com.kdr.star;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences settings=PreferenceManager.getDefaultSharedPreferences(this);
boolean first=settings.getBoolean("first", false);
TextView txt = (TextView) findViewById(R.id.textView1);
if(first)
{
Typeface font=Typeface.MONOSPACE;
txt.setTypeface(font);
txt.Invalidate();
}
Button b=(Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent= new Intent(Main.this,Preference.class) ;
startActivity(intent);
}
});
}
}
此代码可以部分使用。选中该复选框后,返回时该更改不会出现在该实例中。但如果应用程序关闭并再次打开,则会看到更改。但是我想在选中复选框后立即显示更改。即使invalidate函数没有帮助。有没有其他方法可以实现它。在这方面的任何指导将是非常值得注意的。提前致谢
答案 0 :(得分:1)
尝试postInvalidate()not invalidate()。
不鼓励在非UI线程中使用invalidate()方法。
答案 1 :(得分:0)
由于您将无效项放在onCreate()中,我认为它不会重绘更改。
尝试将invalidate()方法放在onClickListener()中,或者创建一个新方法来刷新图像并在侦听器上调用它。