使用setCompoundDrawables()排列图像

时间:2014-01-27 04:24:15

标签: java android android-drawable

我刚刚了解了TextView.setCompoundDrawables(),我在ListView中使用它来将图像放在文本的左侧。问题是缩略图图像的大小不同,因此文本遍布整个地方。是否有一种简单的方法可以使文本在左侧很好地排列?

代码:

        TextView machineText = (TextView) v
                .findViewById(android.R.id.text1);
        machineText.setCompoundDrawablesWithIntrinsicBounds(thumbnail,
                null, null, null);

截图:

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用setCompoundDrawablePadding(int pad)来动态更改drawable和text之间的填充。你应该做的是编写自己的ListAdapter并在自定义listitem布局中布局每个图像和文本。会容易得多。我的经验是位图复合绘图在不同的设备上看起来会有很多不同。

答案 1 :(得分:1)

Imageview / ImageButton是我熟悉的唯一可以进行缩放控制的视图。

如果您将图片放在图片视图中并将文本视图放在右侧,您将获得更多控件的相同效果。然后,您可以缩放图像。 ScaleType = fitxy将确保将图像绘制到两个xy边框。缺点是图像可能会显得拉伸,如果它们不适合自然。但是你也可以玩其他比例类型。

    <ImageView
        android:id="@+id/my_iv"
        android:layout_width="30dp"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/overflow"

     />

    <TextView 
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_toRightOf="@id/my_iv"
        />

我没有使用TextView + drawable选项,但您也可以尝试确保图像本质上具有相同的大小。我不确定android在部分textview时选择drawable大小,所以我不确定这是否有效。

答案 2 :(得分:0)

试试这个:

TextView machineText = (TextView) v.findViewById(android.R.id.text1);
thumbnail.setBounds(60, 60, 60, 60);
machineText.setCompoundDrawables(bd, null, null, null);

而不是60根据需要设置边界。