2014-10-03 81 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