我需要在垂直ListView
中安排两个LinearLayout
,以便第二个ListView位于第一个ListView的最后一个项目的末尾。
如果ListView1为空,则视图应该是这样的。
随着ListView1.size()的增加,ListView2应该被拉低到极限。
ListView1达到固定高度(或重量),它应该停止扩展并开始滚动。
我认为android中没有方法为View
设置maxHeight。
我已经尝试过几乎所有的layout_height =“wrap_content”组合,两个ListView的固定高度和权重。在所有情况下, 第一个要求(image1)将失败:ListView1将不在顶部 或最后一个要求(image3)将失败:ListView2将被推出屏幕。
任何帮助或建议将不胜感激。提前谢谢。
修改
我目前的代码是:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
android:id="@+id/myOrderListView"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="0.6" >
</ListView>
<ListView
android:id="@+id/myCompletedOrderListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="0.4" >
</ListView>
</LinearLayout>
我尝试过不同的重量组合,例如:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
android:id="@+id/myOrderListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.6" >
</ListView>
<ListView
android:id="@+id/myCompletedOrderListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="0.4" >
</ListView>
</LinearLayout>
但它最后的要求会失败。
编辑2: @dangVarmit
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
android:id="@+id/myOrderListView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
<ListView
android:id="@+id/myCompletedOrderListView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="20dp" >
</ListView>
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
如果你的意思是这样,那仍然是req3。
答案 0 :(得分:0)
您可以在左右列表视图中找到以下代码,您可以将其更改为上方和下方列表视图,或者您想要显示 main_activity.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">
<LinearLayout
android:id="@+id/main_top_bit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/orange">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content" android:orientation="horizontal">
<Button
android:id="@+id/button_1"
style="@style/landscape_top_button"
android:text="button1" />
<Button
android:id="@+id/button_2"
style="@style/landscape_top_button"
android:text="button2"/>
</LinearLayout>
</LinearLayout>
<View android:id="@+id/main_horizontal_bar"
android:layout_height="3dip" android:layout_width="fill_parent"
android:background="@color/gray" android:layout_marginTop="1dip" />
</LinearLayout>
<LinearLayout
android:id="@+id/lower_linear_layout"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/main_top_bit">
<RelativeLayout
android:layout_below="@+id/lower_linear_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="150dip"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/teal"
android:id="@+id/org_left_linearlayout2">
<Button
android:id="@+id/button_3"
style="@style/landscape_top_button"
android:text="button3"/>
<Button
android:id="@+id/button_4"
style="@style/landscape_top_button"
android:text="button4" />
</LinearLayout>
<ListView
android:background="@color/green"
android:id="@+id/lstLeft"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/org_left_linearlayout2"
android:layout_above="@+id/org_left_bottom_rl"
android:cacheColorHint="#00000000"/>
<RelativeLayout
android:id="@+id/org_left_bottom_rl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/purple" >
<Button
android:text="button5"
android:id="@+id/button_5"
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
</RelativeLayout>
</RelativeLayout>
<View
android:layout_width="3dip"
android:layout_height="fill_parent"
android:background="@color/gray">
</View>
<RelativeLayout
android:layout_below="@+id/lower_linear_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/olive"
android:id="@+id/org_right_linearlayout2">
<Button
android:id="@+id/button_6"
style="@style/landscape_top_button"
android:text="button6" />
<Button
android:id="@+id/button_7"
style="@style/landscape_top_button"
android:text="button7" />
</LinearLayout>
<ListView
android:id="@+id/lstRight"
android:background="@color/blue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/org_right_linearlayout2"
android:layout_above="@+id/org_right_bottom_rl"
android:cacheColorHint="#00000000"/>
<RelativeLayout
android:id="@+id/org_right_bottom_rl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/red"
android:layout_alignParentBottom="true">
<Button
android:text="button8"
android:id="@+id/button_8"
android:layout_alignParentRight="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
private final String TAG = this.getClass().getName();
ListView leftList;
ListView rightList;
static final String[] FRUITS = new String[] {"Apple", "Bananna", "Cherry", "Pear", "Strawberry"};
static final String[] VEGETABLES = new String[] {"Asparagus", "Bamboo shoots", "Celery", "Ginger", "Spinach"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
leftList = (ListView) findViewById(R.id.lstLeft);
rightList = (ListView) findViewById(R.id.lstRight);
populateLeftList();
populateRightList();
}
public void populateLeftList(){
leftList.setAdapter(new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, FRUITS));
}
public void populateRightList(){
rightList.setAdapter(new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, VEGETABLES));
}
}
答案 1 :(得分:0)
应该可以为您提供所需的结果。
答案 2 :(得分:0)
我自己找到了一个解决方案。它完全按照我的意愿工作。我不知道这是不是一个好方法。我正在寻找xml解决方案。
getDeviceHeight()
是我查找设备高度的方法,以像素为单位。
200是My ListViews上方其他ui元素的近似高度。
myorderList
是我的第一个ListView
if(myorderList.getHeight() > ((getDeviceHeight()/2) - 200)) {
LayoutParams params = myorderList.getLayoutParams();
params.height = (int)((getDeviceHeight()/2) - 200);
myorderList.setLayoutParams(params);
}
当第一个ListView发生任何类型的更改时,应该这样做。
修改强> 当物品在达到最大高度后被移除时,这也会失败: - (