2014-10-03 64 views
0

我使用权重将我的屏幕分为三部分。在其中一个我有一个列表视图,在另外两个我有图像浏览。但我的列表视图占据整个屏幕。有人可以从逻辑上解释我在这里做错了什么吗?修复ListView的宽度

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" > 

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

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

</LinearLayout> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" > 
    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

而且列表视图填充为

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"first","second"}); 
    listview = (ListView)this.findViewById(R.id.listView1); 
    listview.setAdapter(arrayAdapter); 
    } 
+0

设置你的列表视图来0dp的宽度,和所有的人包含这个问题的重量 – zgc7009 2014-10-03 19:53:29

+0

只要我将我的listview的宽度设置为0dp。列表视图是不可见的。屏幕现在被正确地分成了几部分,但列表不可见, – yagnasri 2014-10-03 19:57:27

+0

对不起,意思是你的listview容器,没有看懂它......但我的第二部分陈述是正确的:P只要你设置了一个重量,确保你的宽度为0.原因是因为如果您设置的实际尺寸不是0,则会测量该尺寸,然后重新测量以处理重量。这是低效率的,最好将它设置为0并让重量做它的事情 – zgc7009 2014-10-03 19:59:55

回答

1

试试这个,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" > 

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

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

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

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

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

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

+0

感谢它的工作。你能解释为什么容器宽度必须设置为0dp? – yagnasri 2014-10-03 20:05:01

+0

@yagnasri看看我的意见在你的问题 – zgc7009 2014-10-03 20:05:54

+0

你可以按照这个,http://stackoverflow.com/questions/3995825/what-does-androidlayout-weight-mean和http://developer.android.com/指南/主题/ UI /设计/ linear.html – Chitrang 2014-10-03 20:08:32