android-如何动态获取列表视图的宽度和高度

时间:2011-07-01 13:08:17

标签: android

在我的应用程序中,我希望使用适配器显示列表视图。但我想获得列表视图的当前高度和宽度(意味着使用适配器生成列表后)。怎么弄它。任何人都可以帮助我。

感谢

2 个答案:

答案 0 :(得分:4)

getWidth()中使用ListView的getHeight()onWindowFocusChanged方法获取宽度和高度。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);


    System.out.println("Width:" + listview.getWidth());
    System.out.println("Height:" + listview.getHeight());

}

答案 1 :(得分:2)

要获取任何视图的当前宽度或高度,您需要设置onLayoutChange侦听器

public class MainActivity extends Activity implements OnLayoutChangeListener {

    private View newView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        newView = getLayoutInflater().inflate(R.layout.main_activity, null);
        newView.addOnLayoutChangeListener(this);
        setContentView(newView);
    }

    public void onLayoutChange(View v, int left, int top, int right,
            int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
        //Here you can get size of you ListView, e.g:
        mylistView.getWidth();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        newView.removeOnLayoutChangeListener(this);
    }
}

27Nov15 - 这是一个很好的答案,我认为你应该释放资源。这对于一个Activity来说可能并不重要,但是片段可以使用相同的方法,它们可能会更频繁地出现。