2015-05-15 24 views
1

我爲基於屏幕方向的自定義列表視圖項目設置了不同的高度,並且在下面的代碼中我監聽屏幕方向更改,並根據它,當getView(...)在列表視圖項上被調用時,我設置了轉換視圖的高度。Android:我可以在getView中設置轉換後的視圖佈局()

我的問題是,有沒有比這更好的解決方案?

這種方法對UI加載速度過程有何影響?

我針對API14 +

P.S:(200 & 300)下面在這裏作爲示例加入,它們不是固定在運行時,它們在運行時根據畫面dpi的改變。

int mConvertViewHeight; 


@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     mConvertViewHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics()); 
    } 
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     mConvertViewHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); 
    } 
} 

在我的列表視圖定製陣列適配器

@Override 
public View getView(final int aConvertViewPosition, View aConvertView, ViewGroup parent) 
{ 
     mParams = aConvertView.getLayoutParams(); 
     mParams.height = mMainActivity.mConvertViewHeight; 
} 

回答

4

如果您需要在人像/風景模式只是不同的項目視圖,您可以創建佈局,土地和佈局端口的文件夾不同的佈局

+0

這是一個很好的解決方案,但上面的數字(200和300)不是固定的,我在這裏添加它們作爲示例,這些數字根據屏幕dpi而改變。任何其他建議?遠離創建不同dpi的不同文件夾佈局,如sw <200>佈局等。 –

+0

還有更多建議嗎? –

相關問題