我知道这个问题已被多次回答,但这些答案并没有帮助我。我的应用程序在5英寸屏幕上看起来很完美,但在6英寸以上,对齐方式不同。我也在清单中添加了标签......还设计了布局,布局大,布局正常。 我想知道什么是使布局支持所有屏幕的最佳方法,而不需要为一个屏幕制作3或4个布局。
答案 0 :(得分:0)
要支持多种分辨率,您可以使用多个布局文件,但使用单个布局文件可以更轻松地进行文件维护和管理。当您需要为不同的分辨率修改部分布局时,最好使用dimens.xml,这样可以很容易地修改。
此链接可以帮助您:
答案 1 :(得分:0)
很抱歉回答而不是评论,但这是因为我的声誉很低,你可以发现这篇文章对Google的开发者很有帮助 https://developer.android.com/guide/practices/screens_support.html,此视频也是如此 https://www.youtube.com/watch?v=GTd7QVv7lzg
答案 2 :(得分:0)
有多种方法可以解决您的问题。
<强> 1 即可。您可以根据屏幕尺寸(如7英寸和7英寸)为相同的布局创建不同的XML,对于大屏幕(我不建议这样做)
一组六个广义密度:
ldpi(低)~120dpi 在此处输入代码 mdpi(中)~160dpi hdpi(高)~240dpi xhdpi(超高)~320dpi xxhdpi(extra-extra-high)~480dpi xxxhdpi(extra-extra-extra-high)~640dpi
在这里阅读(如何创建多个XMLS) - &gt; https://developer.android.com/guide/practices/screens_support.html
2 。根据比率
给出尺寸Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
screenHeight = size.y;
screenWidth = size.x;
现在您拥有该特定设计的screenHeight
和screenWidth
的值
现在位置布局
例如:如何将视图定位为线性
topLinearLayout = (LinearLayout) inflateView.findViewById(R.id.top_len_one);
topLinearLayout.setGravity(LinearLayout.HORIZONTAL);
topLinearLayout.getLayoutParams().width = width;
topLinearLayout.getLayoutParams().height = 495 * height / 1920;
例如:如何将视图定位为相对
RelativeLayout.LayoutParams relativeLayoutForPassword = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
relativeLayoutForPassword.setMargins(screenWidth * 240 / 1080, screenHeight * 960 / 1920, 20, 0);
editTextPassword.setLayoutParams(relativeLayoutForPassword);
// 1080 is my default wire frame's design width , 1920 is height (in pix)
所以喜欢, 我有一个1920高,1820宽的图像 在我的默认线框的设计高度上创建一个高度为210的布局,并将其大小调整为我的设计屏幕大小 - &gt; 210/1920 *您的设计高度
这可以保持任何屏幕的完美比例