0

我认为快速的一个:

我无法让我的 listView 正确对齐嵌入的 ImageView。

正如您在下面看到的,图像没有正确排列(它们受到相邻 TextView 中文本数量的影响):

图像问题

这是行项目的有问题的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="horizontal" 
android:gravity="left">


<ImageView
    android:id="@+id/flagIcon"
    android:layout_width="60sp"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:layout_weight="0.05"
    android:src="@drawable/orange_flag"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:orientation="vertical" 
    >

    <TextView
        android:id="@+id/location_row_item_main_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"/>

    <TextView
        android:id="@+id/location_row_item_secondary_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" 
        android:textSize="12sp"/>

</LinearLayout>

<Button
    android:id="@+id/add_spec_button"
    android:layout_width="60sp"
    android:layout_height="60sp"
    android:layout_gravity="center_vertical"
    android:focusable="false"
    android:text="@string/location_add_spec"
    android:onClick="myClickHandler"/>

</LinearLayout>

有任何想法吗?谢谢。

4

2 回答 2

1

在此处输入图像描述

布局视图

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_play_live" />


    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_play_live" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_toRightOf="@+id/imageView1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>

</RelativeLayout>
于 2014-01-27T11:10:23.107 回答
0

尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:orientation="horizontal" 
    android:gravity="left">


    <ImageView
        android:id="@+id/flagIcon"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:src="@drawable/orange_flag"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center_vertical|left"
        android:orientation="vertical" 
        >

        <TextView
            android:id="@+id/location_row_item_main_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>

        <TextView
            android:id="@+id/location_row_item_secondary_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" 
            android:textSize="12sp"/>

    </LinearLayout>

    <Button
        android:id="@+id/add_spec_button"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:focusable="false"
        android:text="@string/location_add_spec"
        android:onClick="myClickHandler"/>

</LinearLayout>

主要问题是由中心垂直的宽度引起的LinearLayout。的重量ImageView也是无用的,它有一些用于RelativeLayout.

android:gravity注 1:注意和之间的区别android:layout_gravity

注 2:sp大小单位用于文本大小。从文档:

dp 是与密度无关的像素,对应于 160 dpi 像素的物理尺寸。
sp 是相同的基本单位,但按用户首选的文本大小(它是与比例无关的像素)进行缩放,因此在定义文本大小时应使用此测量单位(但绝不用于布局大小)。

于 2013-02-11T23:11:02.477 回答