2016-01-25 104 views
3

这是我检查的屏幕尺寸和改变FrameLayout大小的代码。检查屏幕大小不工作

FrameLayout topLayout = (FrameLayout) findViewById(R.id.topLayout); 

    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    double x = Math.pow(dm.widthPixels/dm.xdpi,2); 
    double y = Math.pow(dm.heightPixels/dm.ydpi, 2); 
    double screenInches = Math.sqrt(x + y); 

    if (screenInches < 5) topLayout.setLayoutParams(new LinearLayout 
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,170)); 
    if (screenInches >= 5 && screenInches < 7) topLayout 
    .setLayoutParams(new LinearLayout 
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 200)); 
    else topLayout.setLayoutParams(new LinearLayout 
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 230)); 

我不知道为什么它不工作。

+0

是什么,如果任何的错误? –

+0

没有错误。只是FrameLayout的高度减少了... – DevOma

回答

1

您可以使用DisplayMetrics

描述有关显示的一般信息的结构,如其大小,密度和字体缩放比例,如 。现在

DisplayMetrics metrics = getResources().getDisplayMetrics(); 

    int DeviceTotalWidth = metrics.widthPixels; 
    int DeviceTotalHeight = metrics.heightPixels; 
    FrameLayout topLayout = (FrameLayout) findViewById(R.id.topLayout); 

    topLayout.getLayoutParams().height= (DeviceTotalHeight/4); // Use Your Logic 

,你可以简单地使用你的screenInches逻辑。

+1

非常感谢你!你很酷! – DevOma

+0

@Omuradil很乐意帮忙.Move领先。 –

0
DisplayMetrics displaymetrics = new DisplayMetrics(); 
((Activity)mContext)getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 
+1

Darshan Kachhadiya,不明白...你能解释一下吗? – DevOma

+0

u能获得装置高度则u集%装置高度 的一样,如果u使用的FrameLayout高度10%的比u可以使用高度10%为帧布局 –

+0

然后用mContext – DevOma

0

为了改变布局参数,你必须这样做:

topLayout.getLayoutParams().width = 100; 
topLayout.getLayoutParams().height = 100; 
+0

没有帮助(( – DevOma