我有一个带有设置菜单的操作栏。在它上面它表示较小的文本然后我想要获得文本化并从当前文本大小中减去2。我有以下代码,由于某种原因只是使文本更大。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.small) {
TextView english = (TextView) findViewById(R.id.English);
english.setTextSize(english.getTextSize()-2);
return true;
}
我做错了什么?
答案 0 :(得分:1)
您需要了解设备的当前显示指标,尤其是密度,才能进行正确的尺寸调整。具有非常高分辨率的片剂将具有更高的像素密度。默认情况下,单位使用时 你调用getTextSize是SP或Scaled Pixels。所以,如果你不考虑密度 并通过使用当前文本大小传递它来调用setTextSize,它将无法工作。下面的代码是正确的方法。
DisplayMetrics metrics;
metrics = getApplicationContext().getResources().getDisplayMetrics();
float fTextSize = english.getTextSize()/metrics.density;
english.setTextSize(fTextSize-2);