自动调整textView与不同的密度设备android

时间:2012-12-12 05:41:35

标签: android textview autoresize autoscaling

在我的应用程序的顶部,我有一个标题,应该显示在中间,右边的按钮。由于textViews的长度在我的控制之后,我有时会因为内容的长度而使我的标题越过按钮。

在关注this后,我不知何故倾向于解决问题。我的设备是HTC的愿望。不幸的是,如果我查看Galaxy SIII,那就不行了。

我想知道如何根据不同密度的不同设备来管理这个问题。

我在相对布局中的控件

4 个答案:

答案 0 :(得分:1)

您还可以通过此检查设备屏幕密度 -

    WindowManager wm = (WindowManager) _context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    int screenWidth = display.getWidth();
    int screenHeight = display.getHeight();

并且可以相应地管理您的应用所需的内容..

答案 1 :(得分:0)

只需在xml中使用weightsum,并将所有视图的宽度设为填充父级.....这样可以自动调整textview的大小

答案 2 :(得分:0)

您可以根据自己的DPI维护布局 在XHDPI中复制相同的XML数据(因为S3属于XHDPI)并且类似地在HDPI中复制XML数据 但 请记住layOut的以下Thing Pixel Ratio 以下

  

在LDPI中1:0.75    在MDPI中它的1:1   在HDPI中1:1.5   在XHDPI中它的1:2

答案 3 :(得分:0)

Display display = ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
float density = dm.density; 
int screenWidth = display.getWidth();

使用上面的代码,您的屏幕密度将为浮点数。因此您可以使用它来计算textView的宽度,如:

int newWidth = (int) (density * 100);

其中100是基于大小。 或者你可以根据你的screenWdith得到一个比率。

int newWidth = screenWidth / 2;