0

嗨,我正在为所有尺寸的手机和平板电脑在 android 中做一个应用程序。imageviews 显示在所有尺寸上都很好。但是我面临 textview 字体大小的问题。在我的应用程序中,我需要显示带有该背景和文本的 textview,但不同大小的文本尺寸显示不正确。任何有想法的人请帮助我。我尝试使用下面的代码...

主活动.class

 public class MainActivity extends Activity {
 float screenHeight,screenWidth,screendensity;
 RelativeLayout alpha_page2;
 ImageView alpha_back,alpha_back1;
 TextView option121;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
     screenHeight = displaymetrics.heightPixels;
     screenWidth = displaymetrics.widthPixels;
     screendensity = displaymetrics.densityDpi;
     Log.i("screenHeight",""+screenHeight);
     Log.i("screenWidth",""+screenWidth);
     Log.i("screendensity",""+screendensity);
    setContentView(R.layout.activity_main);

    int letpading=(int)(116*(screenWidth/1024));
    int toppading=(int)(79*(screenHeight/600));

    int textsiz=(int)(50*(screendensity/600));
    option121 = (TextView)findViewById(R.id.text1);
    option121.setBackgroundResource(R.drawable.dog_b_blank);
    option121.setText("A");
    option121.setText(Color.BLACK);
    RelativeLayout.LayoutParams layoutoption121 = (RelativeLayout.LayoutParams) option121.getLayoutParams();       
    layoutoption121.height=(int)(180*(screenHeight/600));  
    layoutoption121.width=(int)(180*(screenWidth/1024));
    layoutoption121.topMargin=(int)(100*(screenHeight/600));
    layoutoption121.leftMargin= (int)(250*(screenWidth/1024));
    option121.setPadding(letpading, toppading, 0, 0);

    option121.setTextSize(textsiz);
    }

}
4

1 回答 1

0

那不是这样做的。Android 会为您处理文本大小,在指定文本大小时使用“sp”(与比例无关的像素)单位,如果您需要为不同的屏幕配置不同的大小,请阅读以下内容:

支持多屏

基本上,您需要在相应资源目录中的 .xml 文件中定义文本大小:

res/values-large res/values-xlarge 等。

然后在您的布局 xml 或代码中引用这些常量。

于 2012-10-09T09:13:02.577 回答