Android 具有匹配项的ListView';当填充物品时,不要考虑母体的重量。为什么?

Android 具有匹配项的ListView';当填充物品时,不要考虑母体的重量。为什么?,android,android-layout,Android,Android Layout,我在2个不同的线性布局中有2个列表视图。2个线性布局是更复杂UI的一部分,2个线性布局的高度是权重值。 内部的两个列表视图仅填充父视图(LinearLayout)。在我开始用项目填充列表视图之前,一切都正常。 当我用10个项目填充第一个listView时,第一个listView开始占据第二个listView的位置,因此最后第二个listView比第一个listView占用更少的空间。这不是我们想要的行为。我需要修复ListView 这是代码。将省略不需要的代码: <LinearLayout

我在2个不同的线性布局中有2个列表视图。2个线性布局是更复杂UI的一部分,2个线性布局的高度是权重值。 内部的两个列表视图仅填充父视图(LinearLayout)。在我开始用项目填充列表视图之前,一切都正常。 当我用10个项目填充第一个listView时,第一个listView开始占据第二个listView的位置,因此最后第二个listView比第一个listView占用更少的空间。这不是我们想要的行为。我需要修复ListView

这是代码。将省略不需要的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="9"
android:orientation="vertical" >
  ...
  <LinearLayout
  android:id="@+id/secondPart"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:orientation="vertical"
  android:weightSum="9.1"
  android:layout_weight= "9">

    <LinearLayout
        android:id="@+id/Screen1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="4.5"
        android:orientation="vertical" >

                <ListView 
                    android:id = "@+id/lvMain1"
                    android:orientation="vertical"
                    android:layout_height = "match_parent"
                    android:layout_width="match_parent"/>


     </LinearLayout>   

     <LinearLayout 
                    android:id = "@+id/timerContainer2"
                    android:orientation="horizontal"
                    android:layout_weight="0.1"
                    android:layout_height = "0dp"
                    android:layout_width="match_parent">


       ....

    </LinearLayout>

    <LinearLayout 
        android:id = "@+id/Screen2"
        android:orientation="vertical"
        android:layout_weight="4.5"
        android:layout_height ="0dp"
        android:layout_width="match_parent">

                 <ListView 
                    android:id = "@+id/lvMain2"
                    android:orientation="vertical"
                    android:layout_height = "match_parent"
                    android:layout_width="match_parent"/>


    </LinearLayout>

   </LinearLayout>

 </LinearLayout>

...
....
整个UI的权重和已定义,为9.1。更改此项:

 <LinearLayout
    android:id="@+id/Screen1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="4.5"
    android:orientation="vertical" >

            <ListView 
                android:id = "@+id/lvMain1"
                android:orientation="vertical"
                android:layout_height = "match_parent"
                android:layout_width="match_parent"/>


 </LinearLayout>   

致:


我不确定这是否能解决您的确切问题,但这里不需要线性布局。

很抱歉,时间太长了。 是我的错

在代码方面,我设置了屏幕1和屏幕2的权重

不知怎的,我通过代码改变了宽度和高度:

    LinearLayout.LayoutParams params = 
            new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    LinearLayout.LayoutParams params2 = 
            new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
我只是想改变重量:

params.weight = 4.5f;

但是没有在构造器中设置正确的宽度和高度。

根据我的理解,您希望这样:

XML:

<?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="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Seperator" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

</LinearLayout>
public class MYList extends Activity {

    ListView listTOP,listBottom;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo2);

        ArrayList<String> data = new ArrayList<String>();

        for(int i=0;i<11;i++)
        {
            data.add("Item "+(i+1));
        }

        listTOP = (ListView)findViewById(R.id.listView1);
        listBottom = (ListView)findViewById(R.id.listView2);

        listTOP.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,data));
        listBottom.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,data));
    }

}

Java代码:

<?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="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Seperator" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

</LinearLayout>
public class MYList extends Activity {

    ListView listTOP,listBottom;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo2);

        ArrayList<String> data = new ArrayList<String>();

        for(int i=0;i<11;i++)
        {
            data.add("Item "+(i+1));
        }

        listTOP = (ListView)findViewById(R.id.listView1);
        listBottom = (ListView)findViewById(R.id.listView2);

        listTOP.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,data));
        listBottom.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,data));
    }

}
公共类MYList扩展活动{
ListView listTOP、listBottom;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.demo2);
ArrayList数据=新的ArrayList();

对于(int i=0;我可以发布这些线性布局的父项吗?抱歉。但这没有帮助..尽管我以某种方式填充列表视图,但权重没有得到更多尊重。抱歉,伙计。这是我的错