0

customadapter を使用して getView() メソッドをオーバーライドしています。このメソッドでは、0 を返す view.getHeight() を呼び出します。リストビュー内の各項目の高さ (ピクセル単位) を調べたいと思います。そして、それが画面上のどこにあるかを見つけます。したがって、リストビューに10個のアイテムがある場合、画面上の5番目のアイテムの位置(ピクセル単位)を見つけることができます。アイテムのyを見つけたいと思います。左上隅。

CustomArrayAdapter adapter = new CustomArrayAdapter(this,R.layout.rowlayout,mydizi);
    View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
    lv.addHeaderView(header);


        lv.setAdapter(adapter);
        View viewList = lv.getChildAt(5 - lv.getFirstVisiblePosition());
        viewList.getLocationOnScreen(location);
4

2 に答える 2

0

リスト mList 内の特定の VISIBLE 行 nPosition について、次の方法でビューの位置を取得できます。

// find the position of the source and destination accounts ListView rows
int[] location = {0,0};

View viewList = mList.getChildAt(nPosition - mList.getFirstVisiblePosition());
viewList.getLocationOnScreen(location);

ただし、これはおそらく getView() の外部、つまりリストにデータが入力された後に行う必要があります。

于 2012-07-26T15:54:07.307 に答える
0

ViewTreeObserver のようなものを使用する必要がある場合があります。この質問の回答をご覧ください。これに似たブロックを onCreate メソッドに配置できます。ビューが値 0 を返す場合は、アクティビティ ライフサイクルの早い段階 (つまり、画面オブジェクトがマップされて測定可能になる前) にビュー メソッドを呼び出している可能性があります。

于 2012-07-26T15:33:36.013 に答える