1

我已经重载了 listview 的 getView 方法来填充列表项的自定义样式。

这是现在的样子:!!

在此处输入图像描述

红色只是显示列表视图项的背景

在这里,我使用了 3 个控件:用于图像的 Imageview、2 个文本视图(一个顶部,一个底部)。

这里的问题是列表视图项目的高度正在增加。我想要两个文本视图而不是高于或低于图像。在某种程度上我知道这个问题的根本原因,但不知道如何解决它。

这是列表视图项的布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp"   >

  <ImageView android:id="@+id/imgIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp" 
    android:scaleType="fitCenter"/>

   <TextView android:id="@+id/txtTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="top"
    android:textStyle="bold"
    android:textSize="20sp"
    android:textColor="#FFFFFF"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"
    android:layout_alignLeft="@+id/imgIcon"
    android:layout_alignTop="@+id/imgIcon"
    android:layout_alignBottom="@+id/imgIcon"/>

   <TextView android:id="@+id/txtTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:textStyle="bold"
    android:textSize="18sp"
    android:textColor="#FFFFFF"
    android:layout_marginLeft="10dp"
    android:layout_marginBottom="5dp"
    android:layout_alignLeft="@+id/imgIcon"
    android:layout_alignTop="@+id/imgIcon"
    android:layout_alignBottom="@+id/imgIcon"/>

问题是我正在为 Imageview 使用 png 图像,并且它们的大小在某些纵横比中增加了。如果我对列表视图项布局的高度进行硬编码,特别是在我的手机屏幕尺寸上,事情开始看起来不错,但在某些不同的屏幕尺寸上情况变得更糟(这也是有道理的)。

在此处输入图像描述

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" 
android:layout_width="fill_parent"
android:layout_height="70dp"
android:padding="5dp"   >

如果有人可以解释如何做到这一点,那就太好了。主要问题是在图像上显示文本(并且图像不一样)。谢谢。

更新:我的主要问题是我没有图像的位向量,而是 PNG,它试图放大图像。(将比例类型设置为 center-fit 可能是一个选项,但它是否适用于背景资源?如果我将图像设置为列表视图项的背景并在其上设置两个文本,则输出如下。 在此处输入图像描述

4

2 回答 2

1

如果您使用纯色作为背景,并且您打算支持各种屏幕尺寸,我认为在文本视图上使用背景颜色填充可能会更容易,文本视图堆叠和对齐以便有没有边界。然后它不会有任何堆叠问题(一个简单的线性布局就可以了)并且它可以在不处理图像的情况下进行扩展。

于 2013-04-12T16:34:36.800 回答
1

好的,在您的 CustomArrayAdaptor 中调用 getView() 时,不要将 ImageView 位图设置为您拥有的图像(我相信您当前正在做的事情),而是在您的视图上调用 View.setBackgroundResource(R.drawable.yourimage.png)在你充气之后。xml中的等价物如下:

android:background="@drawable/yourimage"。

如果您需要更多信息,请告诉我。

于 2013-04-12T16:51:22.680 回答