我有两个ListView。我需要将它们水平并排放置。但问题是 - 只能看到一个列表。 (注意:第二个列表位于布局的右侧,最多可以包含1个字符。第一个列表将展开以填充屏幕的其余部分。)
请帮帮我。
布局是这样的。
------------
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
------------
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="true" />
</LinearLayout>
Shaiful
答案 0 :(得分:6)
我无法相信三年内没有人提出过这个问题。也许其他人会有这个问题。
问题是ListView在水平空间方面很贪婪。您可以使用layout_width='0dp'
以及您认为最适合的layout_weight
个数字来告诉它。以下是将leftListView
置于¾且rightListView
置于1/4的示例。我尝试过,它工作正常。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ListView
android:id="@+id/leftListView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:layout_weight=".75" />
<ListView
android:id="@+id/rightListView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:layout_weight=".25" />
</LinearLayout>
另一种选择是使用相同的布局技巧但使用FrameLayouts,然后为每个ListView创建片段。它比较重,但你可能会发现片段处于遗留状态。
答案 1 :(得分:5)
我认为使用此代码它会正常工作。 你必须使用layout_weight = 0.5,事情才会完美无缺。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp"
android:layout_marginTop="60dp"
android:orientation="horizontal"
android:id="@+id/linearLayout2">
<ListView
android:id="@+id/sportsList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/sports_array"
android:layout_weight="0.5"/>
<ListView
android:id="@+id/sportsList_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/sports_array"
android:layout_weight="0.5"/>
</LinearLayout>
因此,基本上在线性布局中使用两个列表视图,并将每个布局的权重赋予0.5。我认为这有帮助。
答案 2 :(得分:1)
我建议使用属性LinearLayout
的{{1}}
然后将带有android:orientation="horizontal"
的 2 LinearLayouts
放入横向的。{
现在用你的东西填充一次垂直。
有关更多信息,请查看here :)
希望这有帮助!
修改强>
试试这个:
android:orientation="vertical"
答案 3 :(得分:1)
你的第一个LinearLayout说明了高度和宽度的fill_parent,所以它将占用所有空间。相反,使用设置为水平的单个LinearLayout,然后将两个ListView放在那里。高度应该是wrap_content。可以根据需要设置宽度(尽管不是fill_parent),您可以使用minWidth和layout_weight更好地指定。
答案 4 :(得分:0)
尝试使用相对布局或表格布局作为根布局,然后将2个列表视图定位为根目录的子项。
答案 5 :(得分:0)
将两者放在一个水平的LinearLayout中,就像几个人建议的那样。对于左侧的列表,将layout_width设置为0,将layout_weight设置为1;对于右侧的列表,将layout_width设置为wrap_content,将layout_weight设置为0.
答案 6 :(得分:0)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ListView
android:id="@+id/list_view2"
android:layout_width="100dp"
android:layout_height="475dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<ListView
android:id="@+id/list_view"
android:layout_width="306dp"
android:layout_height="match_parent"
android:layout_alignParentEnd`enter code here`="true"
android:layout_alignParentRight="true" />
</LinearLayout>
答案 7 :(得分:-1)
确定。我看到线程已经死了,但我知道该怎么做。
我的布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</RelativeLayout>
<ListView
android:id="@+id/ListView01"
android:layout_width="192px"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_toRightOf="@+id/relativeLayout1"
android:layout_weight="1" >
</ListView>
</RelativeLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="55dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</RelativeLayout>
<ListView
android:id="@+id/ListView02"
android:layout_width="192px"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@+id/relativeLayout2"
android:layout_weight="1" >
</ListView>
</RelativeLayout>
</LinearLayout>
我的活动代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.main);
ListView lv1=(ListView)this.findViewById(R.id.ListView01);
ListView lv2=(ListView)this.findViewById(R.id.ListView02);
File fCurrDirOne = new File ("/");
File fCurrDirTwo = new File ("/");
String[] mListOfFilesOne = fCurrDirOne.list();
String[] mListOfFilesTwo = fCurrDirTwo.list();
ArrayAdapter list1 = new ArrayAdapter<String>(
this, R.layout.itemlistview,mListOfFilesOne);
ArrayAdapter list2 = new ArrayAdapter<String>(
this, R.layout.itemlistview,mListOfFilesTwo);
lv1.setAdapter(list1);
lv2.setAdapter(list2);
}
享受)
P.S。您应该为列表项创建layuot,我的名为itemlistview.xml,您可以使用android.R.layout.simple_list_item_1作为默认值。
我的itemlistview.xml文件
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp" >
</TextView>