我想为手机的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如何工作可能是一个很好的例子。
这是生成的图形布局:
蓝色行对应第一个LinearLayout。从下面的第二个截图中可以看出,第二个列表一直到地狱,带我到她身边。有没有办法让列表尊重wrap_content
+ weight
行为?
遵循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>
答案 0 :(得分:0)
如果您将ListView
放在包含LinearLayout
和LinearLayout
的{{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
可能是更好的选择。