Java 在 Android 中,如何设置 ListView 项的高度和宽度?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3210337/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
In Android, how can I set a ListView item's height and width?
提问by Danny
I want to create an interface that has one or two listviews that ultimately span the entire screen with two rows. How can I change their height so that they take up 50% of the screen, vertically?
我想创建一个界面,它有一个或两个列表视图,最终用两行跨越整个屏幕。如何更改它们的高度,使其垂直占据屏幕的 50%?
If it's along the same lines, I'd love to know how to do this regardless of orientation.
如果它沿着相同的路线,我很想知道如何做到这一点,而不管方向如何。
With regards to width; let us say I have two listviews, each with one row. They span the entire screen as described above. The lower listview has two clickable items within it that each take up 50% of the screen space, horizontally.
关于宽度;假设我有两个列表视图,每个视图都有一行。如上所述,它们跨越整个屏幕。下方的列表视图中有两个可点击的项目,每个项目在水平方向上占据屏幕空间的 50% 。
Is that possible? If so, how?
那可能吗?如果是这样,如何?
采纳答案by VenkaReddy
Hi the following code will use full to create an interface that has one or two listviews that ultimately span the entire screen with two rows. The Java file is as follows,
嗨,以下代码将使用 full 创建一个界面,该界面具有一两个列表视图,最终以两行跨越整个屏幕。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;
}
}
And the xml file is,
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>
Try this to get your desired interface.
试试这个以获得你想要的界面。