两个Android ListView中的一个填充了太多空间

时间:2015-02-19 18:57:18

标签: android android-layout android-listview

我想为手机的Android应用获取此布局:

Icon - Object1
List with entries related to Object1

Icon - Object2
List with entries related to Object2

到目前为止,我使用了以下布局树(使用Android Studio中的编辑器以图形方式编辑):

  

根的LinearLayout

     
    

垂直LinearLayout

         
      

包含图标和文字的水平LinearLayout

             

的ListView

    
         

垂直LinearLayout

         
      

包含图标和文字的水平LinearLayout

             

的ListView

    
  

可能这不是组织这种布局的最佳方式(可能我应该使用带有标题的列表,但建议非常受欢迎),但是对于更深入地理解ListView如何工作可能是一个很好的例子。

这是生成的图形布局:

wrong layout

蓝色行对应第一个LinearLayout。从下面的第二个截图中可以看出,第二个列表一直到地狱,带我到她身边。有没有办法让列表尊重wrap_content + weight行为?

very long list

遵循XML代码。我尝试了几种组合(合理和不合理)的布局:重量但没有效果。我还尝试设置第一个LinearLayout(隐藏的)的min-width,但没有任何变化。

你能帮帮我吗?

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:weightSum="2">

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

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:minHeight="50dp">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Object1"
            android:id="@+id/textView24"
            android:textSize="26dp"
            android:paddingLeft="10dp" />
    </LinearLayout>
</LinearLayout>

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView2"
    android:layout_weight="1" />

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

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Object2"
            android:id="@+id/textView25"
            android:textSize="26dp"
            android:paddingLeft="10dp" />
    </LinearLayout>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_weight="1" />
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

如果您将ListView放在包含LinearLayoutLinearLayout的{​​{1}}的{​​{1}}内,则应该有效。使用TextView垂直布局时,您还应该ImageView使用"0dp"

我认为,这样的事情应该有效

height

请注意其他更改:我给内部 - weight任意<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="2"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="0dp" android:gravity="center_vertical" android:minHeight="50dp" android:layout_weight=".2"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView15" android:src="@drawable/abc_ic_menu_share_mtrl_alpha" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Object1" android:id="@+id/textView24" android:textSize="26dp" android:paddingLeft="10dp" /> </LinearLayout> <ListView android:layout_width="wrap_content" android:layout_height="0dp" android:id="@+id/listView2" android:layout_weight=".8" /> </LinearLayout> &#34; .2&#34;然后是LinearLayout一个weight的&#34; .8&#34;。当然,将高度设置为&#34; 0dp&#34;。您可能需要稍微使用那些ListView s,但我认为对于第一个孩子weight做类似的事情应该让你接近。

这可能会使您当前的布局正常工作,但使用标题和/或weight可能是更好的选择。