【问题标题】:Android ImageView not stretching vertically in ListView rowAndroid ImageView 不在 ListView 行中垂直拉伸
【发布时间】:2010-11-26 21:47:18
【问题描述】:

我已经为此苦苦挣扎了好几天,但我已经没有想法了。

在我的列表视图中,每一行都可以有一个垂直条向左刷新,根据状态不同颜色。该“栏”除了状态的视觉表示之外没有其他用途,并且不可点击。

我使用 ImageView 实现了垂直条,其背景设置为具有所需颜色的可绘制对象。问题是垂直条没有拉伸,即使我指定了 fill_parent,它也只有 1 个像素高。

行布局是这样的:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/id1"
        android:scaleType="fitXY"
        android:layout_width="5dp"
        android:layout_height="fill_parent"
        android:background="@drawable/d1" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/id1">
...

(为简单起见,故意将第二个相对布局的内容保留)

我的可绘制 d1 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/c1" />
    <corners android:topRightRadius="5dip" android:bottomLeftRadius="5dip" />
</shape>

所以,

  1. 为什么 ImageView 没有垂直拉伸?
  2. 有没有更好的实现方式 这比使用 ImageView 吗? (一世 尝试了一个简单的视图 背景颜色,但不显示 完全没有)

非常感谢任何帮助。谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    首先,您不妨在这里使用水平 LinearLayout 而不是 RelativeLayout(因为无论如何您只有两个孩子,所以您并没有真正节省任何布局复杂性)。

    更改为 LinearLayout 可能会解决此问题,但我怀疑您在将膨胀的 RelativeLayouts 上的高度匹配为行时可能会遇到特定问题;请参阅对此SO questionthis SO question 的答案的cmets。

    【讨论】:

    • 我有一个相对布局,因为实际上在对象上方有一个文本视图,我省略了该视图以保持这篇文章的 xml 简短。我从您给我的链接中阅读了帖子,并且我已经在使用正确的方法来膨胀视图。但是,我将尝试用多个 LinearLayout 交换相对布局,看看是否可以解决问题。
    • 感谢 Yoni 向我指出那些有价值的 SO 线程。用 LinearLayout 替换根 RelativeLayout 解决了这个问题。不确定我是这个解决方案的忠实粉丝,因为这使得布局层次结构比需要的更复杂,但这可能是让它工作的唯一方法。一个错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多