我正在研究textview上的文字。我正在尝试添加两个按钮来放大和缩小文本视图中的文本,代码就像这样
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chapter_view);
String chapter;
chapter=getIntent().getExtras().getString("ChapterName");
final StringBuffer buffer = new StringBuffer();
int id= getResources().getIdentifier(chapter,"raw",getPackageName());
try{
DataInputStream dataIO= new DataInputStream(getResources().openRawResource(id));
String strLine= null;
while((strLine = dataIO.readLine())!=null){
buffer.append(strLine);
buffer.append("\n");
}
dataIO.close();
}catch(Exception e){
}
final TextView tv=(TextView) findViewById(R.id.chapter);
tv.setText(buffer.toString());
Button zoomIn = (Button) findViewById(R.id.zoomin);
zoomIn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
textSize = tv.getTextSize();
tv.setTextSize((float) (textSize+0.25));
}
});
Button zoomOut = (Button) findViewById(R.id.zoomout);
zoomOut.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
textSize = tv.getTextSize();
tv.setTextSize((float) (textSize-0.25));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.chapter_view, menu);
return true;
}
}
但我遇到的问题是偶数点击缩小按钮,它仍然增加了文本的字体大小。请帮我解决这个问题。此外,一旦我关闭一个章节并打开另一个章节,文本大小将重置为其默认值。对此有任何解决方案吗?我正在考虑使用namevalue对来解决这个问题。
答案 0 :(得分:1)
问题在于传递给setTextSize(float size)
的单位是缩放像素,而getTextSize()
则以像素为单位报告。请尝试使用setTextSize(int unit, float size)
,将单位设置为TypedValue.COMPLEX_UNIT_PX
。
答案 1 :(得分:1)
我在我的机器上试过样品。检查下面的代码。您必须使用范围将变量放在正确的位置。
public class MainActivity extends Activity {
float textSize;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView)findViewById(R.id.textView1);
textSize = tv.getTextSize();
Button btnPlus = (Button)findViewById(R.id.button1);
btnPlus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextView tv = (TextView)findViewById(R.id.textView1);
Log.v("TextSizeP", String.valueOf(textSize));
textSize = (float) (textSize+0.25);
tv.setTextSize(textSize);
Log.v("TextSizeP", String.valueOf(textSize));
}
});
Button btnMinus = (Button)findViewById(R.id.button2);
btnMinus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextView tv = (TextView)findViewById(R.id.textView1);
Log.v("TextSize", String.valueOf(textSize));
textSize = (float) (textSize-0.25);
tv.setTextSize(textSize);
Log.v("TextSize", String.valueOf((float) (textSize-0.25)));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
例如,我在类级别声明了我的textSize
变量。单击相关按钮时,textSize
变量会增加和减少。
这对我来说很好。
答案 2 :(得分:0)
对于返回默认值的大小,您必须使用共享首选项来保存最后一个文本大小的值。
至于文本大小,为什么不逐个增加值,例如点击zoomOut时的tv.setTextSize(textsize ++) 单击zoomIN时的tv.setTextSize(textsize--)
答案 3 :(得分:0)
public class MainActivity extends Activity {
TextView tv;
Button in,out;
static float textSize;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,30);
textSize = tv.getTextSize();
in = (Button) findViewById(R.id.zoomin);
out = (Button) findViewById(R.id.zoomout);
in.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
textSize = (float)(textSize + 2);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize);
}
});
out.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
textSize = (float)(textSize - 2);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}