为什么 listview 项目高度没有改变?
Why doesn't the listview item height change?
我的列表视图设置为:
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/border"
android:padding="5dp">
</ListView>
我根据 xml 文件加载项目:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topbar"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:layout_alignParentTop="true"
android:layout_margin="0px"
android:orientation="horizontal"
android:padding="0dp" >
<TextView
android:id="@+id/place"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="0px"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:textSize="40sp" />
<LinearLayout
android:id="@+id/right"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="0px"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textSize="25sp" >
<TextView
android:id="@+id/score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:gravity="center"
android:textAlignment="viewEnd"
android:textSize="25sp" />
<LinearLayout
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:textSize="25sp" >
<TextView
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp" />
<TextView
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
出于某种原因,android:layout_height="200dp"
行无效。无论我写 200dp 还是 20dp android 都显示相同的项目高度。
我必须更改什么才能获得我想要的项目高度?
a View
只有在布局内时才会有 LayoutParam
。
在没有父布局的情况下膨胀视图的那一刻,任何 XML layout_
属性都将被忽略。
所以要回答这个问题,你必须用父视图膨胀视图,就像这样:
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView =
LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_name, parent, false);
}
}
你的 LinearLayout
ID 为 topbar 两个主要孩子是 TextView
ID 为 place以及 ID 为 right 的 LinearLayout
。您没有为这个孩子设置任何高度值。它们被设置为 wrap_content
。因此,它们将在内容方面进行扩展。如果您的内容很短,它们将不会扩展到 200dp。
- 您可以做的第一件事就是将这两个孩子
layout_height
设置为
fill_parent
,
- 如果您不想要或不喜欢第一个解决方案,那么您应该研究
layout_weight
在 LinearLayout
上的用法。检查 Linear Layout and weight in Android .
祝你好运。
我的列表视图设置为:
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/border"
android:padding="5dp">
</ListView>
我根据 xml 文件加载项目:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topbar"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:layout_alignParentTop="true"
android:layout_margin="0px"
android:orientation="horizontal"
android:padding="0dp" >
<TextView
android:id="@+id/place"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="0px"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:textSize="40sp" />
<LinearLayout
android:id="@+id/right"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="0px"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textSize="25sp" >
<TextView
android:id="@+id/score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:gravity="center"
android:textAlignment="viewEnd"
android:textSize="25sp" />
<LinearLayout
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:textSize="25sp" >
<TextView
android:id="@+id/time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp" />
<TextView
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
出于某种原因,android:layout_height="200dp"
行无效。无论我写 200dp 还是 20dp android 都显示相同的项目高度。
我必须更改什么才能获得我想要的项目高度?
a View
只有在布局内时才会有 LayoutParam
。
在没有父布局的情况下膨胀视图的那一刻,任何 XML layout_
属性都将被忽略。
所以要回答这个问题,你必须用父视图膨胀视图,就像这样:
public View getView (int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView =
LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_name, parent, false);
}
}
你的 LinearLayout
ID 为 topbar 两个主要孩子是 TextView
ID 为 place以及 ID 为 right 的 LinearLayout
。您没有为这个孩子设置任何高度值。它们被设置为 wrap_content
。因此,它们将在内容方面进行扩展。如果您的内容很短,它们将不会扩展到 200dp。
- 您可以做的第一件事就是将这两个孩子
layout_height
设置为fill_parent
, - 如果您不想要或不喜欢第一个解决方案,那么您应该研究
layout_weight
在LinearLayout
上的用法。检查 Linear Layout and weight in Android .
祝你好运。