2016-11-11 136 views
0

到目前爲止,我使用此代碼基於字符串值添加自定義ImageViews屏幕密度繪製資源ID:獲取基於使用字符串

RelativeLayout rl_dashboard = (RelativeLayout) mView.findViewById(R.id.rl_dashboard); 
      for (int i = 0; i < imageResIDs.size(); i++) { 
       int drawableResourceId = mActivity.getResources().getIdentifier(imageResIDs.get(i), "drawable", mActivity.getPackageName()); 
       ImageView imageView = new ImageView(mActivity); 
       imageView.setImageDrawable(ContextCompat.getDrawable(mActivity, drawableResourceId)); 
       rl_dashboard.addView(imageView); 
      } 

但是這一點,因爲我想,給我的最高解析度可繪製,這是xxxdpi atm。有什麼辦法可以拉出特定密度的drawable嗎?

我使用的檢查密度:

DisplayMetrics metrics = new DisplayMetrics(); 
     mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     switch(metrics.densityDpi){ 
      case DisplayMetrics.DENSITY_LOW: 
       break; 
      case DisplayMetrics.DENSITY_MEDIUM: 
       break; 
      case DisplayMetrics.DENSITY_HIGH: 
       break; 
      case DisplayMetrics.DENSITY_XHIGH: 
       break; 
      case DisplayMetrics.DENSITY_XXHIGH: 
       break; 
      case DisplayMetrics.DENSITY_XXXHIGH: 
       break; 
     } 

我會拉起資源之前訪問我的靜態值。

謝謝!

回答

0

原因ImageViews尺寸不對,是我已經添加了缺少LayoutParams

imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));