在安卓中,我该如何设置ListView的项的高度和宽度?

9
我想创建一个界面,其中有一个或两个列表视图,最终跨越整个屏幕,每个视图均为两行。如何更改它们的高度,以使其垂直占据屏幕的50%?
如果是相同的情况,我想知道如何在任何方向上都能实现这一点。
关于宽度;假设我有两个列表视图,每个视图有一行。它们像上面描述的那样跨越整个屏幕。下面的列表视图中有两个可点击的项目,每个项目水平占据屏幕空间的50%。
这是否可能?如果是,怎么做?
1个回答

8

你好,以下代码将使用full创建一个界面,其中包含一个或两个ListView,最终跨越整个屏幕的两行。Java文件如下:

public class DoubleListView extends Activity {
    ListView listView,listView2;
    String[] titles = {"List 1 title1","List 1 title2","List 1 title3","List 1 title4","List 1 title5","List 1 title6","List 1 title7","List 1 title8","List 1 title9"};
    String[] titles2 = {"List 2 title1","List 2 title2","List 2 title3","List 2 title4","List 2 title5","List 2 title6","List 2 title7","List 2 title8","List 2 title9"};
    WindowManager wm;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
        int height = wm.getDefaultDisplay().getHeight();

        listView = new ListView(this);
        listView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,height/2-15));
        listView.setAdapter(new CustomListAdapetr(this, titles));

        listView2 = new ListView(this);
        listView2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,height/2));
        listView2.setAdapter(new CustomListAdapetr(this, titles2));

        ((LinearLayout)findViewById(R.id.mailLayout)).addView(listView);
        ((LinearLayout)findViewById(R.id.mailLayout)).addView(listView2);

    }
    public class CustomListAdapetr extends BaseAdapter{

        private Context mContext;
        private String[] list;

        public CustomListAdapetr(Context context, String[] titles) {
            mContext = context;
            list = titles;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return list[position];
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            CustomView cv;
            if (convertView == null) {
                cv = new CustomView(mContext,""+list[position]);
                } 
            else {
                    cv = (CustomView) convertView;

                    cv.setTitle(list[position]);

                    }
            return cv;
        }

    }

    private class CustomView extends LinearLayout {
        public CustomView(Context context, String itemName) {
            super(context);
            this.setOrientation(HORIZONTAL);
            // Here we build the child views in code. They could also have
            // been specified in an XML file.


            mTitle = new TextView(context);
            mTitle.setText(itemName);

            mTitle.setTextSize(25);

            addView(mTitle, new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT));


            }
        /**         * Convenience method to set the title of a SpeechView         */
        public void setTitle(String title) {
            mTitle.setText(title);
            }
        /**         * Convenience method to set the dialogue of a SpeechView         */

        private TextView mTitle;

        }

}

而 XML 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mailLayout">

</LinearLayout>

尝试以下方法来获得您想要的界面。

虽然我已经转向其他项目,但我会相信你所得到的五个赞。如果你尝试了这个解决方案并且它有效,请通过评论确认一下。谢谢! - Danny
我的意思是包括其他人,以避免“它在我的机器/配置/Android版本上运行良好”的问题。 :) 感谢您的回答! - Danny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接