2012-12-12 25 views
2

在我的应用程序的顶部,我有一个标题,它应该显示在中间,一个按钮在右边。由于textViews的长度在我的控制之下,我有时候会因为长度过长而忽略按钮。使用不同密度的设备自动调整textView android

以下this后,我不知何故倾向于解决这个问题。我的设备是HTC的愿望。不幸的是,如果我检查Galaxy SIII,它并没有办法。

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

我相对布局

回答

0

只是在你的XML使用weightsum,使所有的意见,填充母宽度内部控制.....这使得您的TextView

+0

因为我没有提到第一个,我使用的是相对布局,它不占用weightSum。 – boburShox

+1

ohhhh ....实际上android中最灵活的布局是linearlayout .....如果你可以改变它,将它转换为linearlayout –

0

可以保持布局的自动调整大小根据自己的DPI`s 复制在XHDPI相同的XML数据(S3落在XHDPI)并对其进行测试同样的XML数据复制在华电国际 但 牢记布局以后的事像素比为 以下

在LDPI其1:0.75 在MDPI其1:1 在HDPI其1:1.5 在XHDPI其1:2

1

还可以检查由this--

设备屏幕密度
WindowManager wm = (WindowManager) _context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    int screenWidth = display.getWidth(); 
    int screenHeight = display.getHeight(); 

和最新您的应用程序可以根据需要进行相应的管理..

+0

我需要我的textView的大小正确吗?但是我不能在onCreate方法中获得textView的大小,以便像你提到的那样根据screenHeight工作。它返回0. – boburShox

+0

使用textView.getMeasuredWidth(); ..它会给你文本视图的宽度和accrodingly计算。 – Hulk

+0

我应该在_onCreate()_方法中分别设置一个text和textSize,如果你使用_getMeasuredWidth_它返回0,我相信 – boburShox

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(); 

通过上面这段代码,你有你的屏幕密度为float ..所以你可以用它来计算你的textView的宽度,如:

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

其中100这里是基于大小。 或者你可以根据你的screenWdith有一个比例。

int newWidth = screenWidth/2; 
+0

我在想像_setTextSize()_而不是_setWidth()_ – boburShox

+1

好吧,那么你希望你的文字完全看到......而你不需要将它放置在任何特定的地方? – yahya

+0

是的。只是中间很好。 – boburShox

相关问题