2016-12-10 2 views
0

プログラムでリストビュー内のアイテムの高さを取得しようとしています。そうすることができ、私は当社のウェブサイトにSOMのepostと呼ばれ、私は値が上記のコードから返された次のコードgetMeasuredHeight()はピクセルまたはdpで戻り値を返します

private float calcListViewItemsHeight(ListView listView) { 
    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + ".getCount() :" + listView.getCount()); 

    int height = 0; 
    for (int i = 0; i < listView.getCount(); i++) { 
     View childView = listView.getAdapter().getView(i, null, listView); 
     childView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
     height+= childView.getMeasuredHeight(); 
    } 

    //dividers height 
    height += listView.getDividerHeight() * listView.getCount(); 

    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + "totalHeight in px: " + height); 

    float dp = this.px2dp(height); 
    Log.d(TAG, getApplicationContext().getResources().getResourceEntryName(listView.getId()) + "totalHeight in dp: " + dp); 

    return dp; 
    //return height; 
} 

で出てきた、おそらく私は私のコードDPに変換するために持っている意味、ピクセル単位であることをさまざまな画面サイズでうまく動作します。私のリストは4つの項目が含まれているよう

private float px2dp(int pxVal) { 
    float density = this.getResources().getDisplayMetrics().density; 

    return (pxVal/ density); 
} 

今、私はアイテムの数を表し、次のlogCat出力は、リストビューに含まれていますし、高さの: は私がfollowin Gコードを使用DPするピクセルへ変換しますピクセルとDPの両方でリストビューは、このメソッド「calcListViewItemsHeight」戻り値「高さ」は、私のように、高さのリストビューを持っている私は理解できませんでした

12-10 10:27:40.817 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetails.getCount() :4 
12-10 10:27:40.822 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetailstotalHeight in px: 533 
12-10 10:27:40.822 D/VersDetailActivity2: versicherungsListeActivity2mod_lisVie_versDetailstotalHeight in dp: 266.5 

、上に掲載「calcListViewItemsHeight」 から来reults img_1に表示されていますが、 'calcListViewItemsHeight'が 'dp'を返した場合は、 ew of height img_2

「getMeasuredHeight()」はdpまたはピクセルで値を返しますか?

img_1

enter image description here

img_2

enter image description here

答えて

0

Documentationは、戻り値であることを述べ "このビューの生の測定した高さ。"そして、hereから「生」はピクセルを意味します。そしてthisリンクがあなたを助けるかもしれません。

0

childView.getMeasuredHeight();は、pxの高さを返します。

private float calcListViewItemsHeight(ListView listView){ 

この機能では、ListViewの合計高さを計算しています。 そして計算されたheightはpxになり、height(px)をdp(dp)に変換しています。

これらの結果をどこに適用しているのか知りたいですか。

pxの値は、dpの値よりも大きいため、最初のケースではListViewが2番目のものよりも大きいのです。

はあなたがいないdp .AFAIKで、pxListView高さを与える必要があり、dpの値はxmlファイルに適用可能です。

+0

提供された情報ありがとうございました...この質問もご覧くださいhttp://stackoverflow.com/questions/41074602/regarding-understanding-the-layout-units – user2121

関連する問題