Android 如何在文本旁边有图标的列表视图?

Android 如何在文本旁边有图标的列表视图?,android,android-layout,android-listview,Android,Android Layout,Android Listview,我正试图创建一个带有图标和文本的列表视图,但正如您在屏幕截图中看到的那样,有一个小问题(只有很小一部分文本可见!): 以下是创建此布局的xml文件: //The overall layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:la

我正试图创建一个带有图标和文本的列表视图,但正如您在屏幕截图中看到的那样,有一个小问题(只有很小一部分文本可见!):

以下是创建此布局的xml文件:

//The overall layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>

// this layout is for single rows
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
        <ImageView
        android:id="@+id/lIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

        <TextView
        android:id="@+id/lText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    </LinearLayout>

对行使用相对布局,并将文本放置在图像右侧,如下所示:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
    <ImageView
    android:id="@+id/lIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    <TextView
    android:id="@+id/lText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/lIcon"/>
</RelativeLayout>

尝试将ListView和TextView的
布局\u宽度设置为
填充\u父项


编辑:您正在重置
getView
中的列表项宽度。删除或更正代码

这与适配器中单行充气的方式有关

你应该尝试使用 LayoutInflater#充气(layoutId,parent,false) 如本答复所述:

尝试将此布局用于行布局: 将ID调整为您的。。还要注意android:layout\u-toRightOf-id

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <ImageView
         android:id="@+id/bimage"
         android:layout_height="20dip"
         android:layout_width="20dip"
         android:layout_gravity="left|center"
         android:layout_marginTop="10dip"
         android:layout_marginLeft="5dip"
         android:layout_alignParentLeft="true"
         android:layout_centerVertical="true"
         />
    <TextView
        android:id="@+id/btitle"
        android:layout_toRightOf="@id/bimage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="8dip"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:textSize="18dip"
        android:textColor="#ffffff"
        android:gravity="center_vertical"
        />
</RelativeLayout>


我已经这样做了,但完全一样!我想问题应该出在ListView布局上,因为它没有扩展到占用整个可用空间。这正是我创建列表项的方式。我已经设置了一个自定义适配器,用于对各自的布局进行充气。为了确保,您已经提供了最后两个参数:parent(不为null)和false(用于attachToRoot)?为了供您参考,我在问题中包含了我的适配器的getView。请尝试替换
myView=li.充气(R.layout.listicon,null)
使用
myView=li.inflate(R.layout.listicon,parent,false)
将列表行项目宽度显式设置为90。那是你真正想要的吗?啊,谢谢你。这一直是个问题。我在其他活动中复制了此方法,但忘记设置适当的维度。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <ImageView
         android:id="@+id/bimage"
         android:layout_height="20dip"
         android:layout_width="20dip"
         android:layout_gravity="left|center"
         android:layout_marginTop="10dip"
         android:layout_marginLeft="5dip"
         android:layout_alignParentLeft="true"
         android:layout_centerVertical="true"
         />
    <TextView
        android:id="@+id/btitle"
        android:layout_toRightOf="@id/bimage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="8dip"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:textSize="18dip"
        android:textColor="#ffffff"
        android:gravity="center_vertical"
        />
</RelativeLayout>