2016-01-25 125 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