2015-12-15 7 views
0

Мне нужно добавить макет на высоту экрана, удалив высоту панели действий. Я использую ниже код -установить пользовательский макет на высоту экрана

View popupView = getLayoutInflater().inflate(
       R.layout.left_interaction_layout, null); 
     double screenSize = 0; 
    try { 
     DisplayMetrics dm = new DisplayMetrics(); 
     context.getWindowManager().getDefaultDisplay().getMetrics(dm); 
     int width = dm.widthPixels; 
     int height = dm.heightPixels; 
     int dens = dm.densityDpi; 
     double wi = (double) width/(double) dens; 
     double hi = (double) height/(double) dens; 
     double x = Math.pow(wi, 2); 
     double y = Math.pow(hi, 2); 
     screenSize = Math.sqrt(x + y); 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 
     double screenByTwoSize = screenSize/3; 

     DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     // int width = metrics.widthPixels; 
     // int height = metrics.heightPixels; 
     float mXDpi = metrics.xdpi; 
     float mYDpi = metrics.ydpi; 
     int screenWidth = (int) Math.round(screenByTwoSize * mXDpi); 
     int screenHeight = (int) Math.round(screenByTwoSize * mYDpi); 

     popup = new PopupWindow(popupView, screenWidth, 200, true); 
     popup.setBackgroundDrawable(new BitmapDrawable()); 
     // Get ListView object from xml 
     final ListView listView = (ListView) popupView 
       .findViewById(R.id.list); 
     try { 
      popup = new PopupWindow(popupView, 120, screenHeight * 2 + 250, 
        true); 
      popup.setBackgroundDrawable(new BitmapDrawable()); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

     popup.setOutsideTouchable(true); 
     // popup.showAsDropDown(tvcountry); 
     Rect location = LoginActivity.locateView(v); 
     popup.showAtLocation(v, Gravity.TOP | Gravity.LEFT, 0, 
       location.bottom); 
     popup.update(); 
     popup.setOnDismissListener(new PopupWindow.OnDismissListener() { 

      @Override 
      public void onDismiss() { 

      } 
     }); 

У меня есть жестко заданная высота, которая может отличаться для разных размеров экрана. Как я могу достичь этого динамически. Я должен сделать это расположение к высоте экрана с удалением высоты действия бара поэтому он будет работать, как панель навигации

Заранее спасибо

+0

'DisplayMetrics metrics = getResources(). getDisplayMetrics(); int DeviceTotalWidth = metrics.widthPixels; int DeviceTotalHeight = metrics.heightPixels; ' –

ответ

0

вы можете рассчитать ActionBar высоту следующим образом

TypedValue tv = new TypedValue(); 
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) 
    { 
     actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); 
    } 

и удалить ActionBar высота с вашей фактической высотой