Android-线性布局权重在listview项中无法正常工作
在Android Studio中看起来不错,但在我的手机上执行时不起作用。Android-线性布局权重在listview项中无法正常工作,android,android-layout,listview,Android,Android Layout,Listview,在Android Studio中看起来不错,但在我的手机上执行时不起作用。 我使用的是一个简单的线性布局(水平),里面有两个线性布局(垂直)容器,每个容器应该占据listview行的50%空间。代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="h
我使用的是一个简单的线性布局(水平),里面有两个线性布局(垂直)容器,每个容器应该占据listview行的50%空间。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.5">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="001"
android:id="@+id/pokemonNumber"
android:layout_marginLeft="5dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Bulbasaur"
android:id="@+id/pokemonName"
android:layout_marginLeft="10dp" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Grass"
android:id="@+id/pokemonTypes"
android:layout_marginLeft="50dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.5">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/pokemonImage"
android:src="#ff65ff4f" />
</LinearLayout>
</LinearLayout>
EDIT4:listview的代码
<?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">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pokeList" />
</LinearLayout>
尝试更换:
view = mInflater.inflate(resID, parent, false);
与
第一个命令是“使用我的父级来确定我的布局参数”,第二个命令是“使用我的布局资源的布局参数设置”。尝试替换:
view = mInflater.inflate(resID, parent, false);
与
第一个选项是“使用我的父项来计算我的布局参数”,第二个选项是“使用我的布局资源的布局参数设置”。问题在于,ListView在wrap_内容上具有宽度,这不允许LinearLayout使用其权重属性。因此,解决方案如下所示:
<?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">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pokeList" />
</LinearLayout>
我也在这里的一个问题中读到(不幸的是,找不到链接)将ListView包装内容作为高度是不好的,总是尽量具体,与匹配父项或使用其他约束一样,在添加任何子项之前,它会知道它的高度。问题在于,列表视图在包裹内容上有它的宽度,这不允许LinearLayout使用它的权重属性。因此,解决方案如下所示:
<?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">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pokeList" />
</LinearLayout>
我也在这里的一个问题中读到(不幸的是,找不到链接)将ListView包装内容作为高度是不好的,总是尽量具体,如匹配父项或使用其他约束,以便在添加任何子项之前知道其高度。显示实际使用此布局的代码-这就是问题所在。当然,在编辑中添加。感谢您的帮助。请使用“匹配父项”或“填充父项”使列表视图填充父项。我认为包装内容只会使它的文本视图需要它和重量一样大,没有被使用。成功!谢谢你,我应该意识到,我犯了一个愚蠢的错误。如果你将你的解决方案作为答案发布,我将代表并接受答案。谢谢显示实际使用此布局的代码-这就是问题所在。当然,在编辑中添加。感谢您的帮助。请使用“匹配父项”或“填充父项”使列表视图填充父项。我认为包装内容只会使它的文本视图需要它和重量一样大,没有被使用。成功!谢谢你,我应该意识到,我犯了一个愚蠢的错误。如果你将你的解决方案作为答案发布,我将代表并接受答案。谢谢使用“null”而不是“parent”时没有变化-有其他想法吗?嗯-ListView的布局是什么样子的?使用“null”而不是“parent”时没有变化-有其他想法吗?嗯-ListView的布局是什么样子的?
<?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">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pokeList" />
</LinearLayout>