带有右对齐、裁剪、不缩放内容的ImageView

4

我已经搜索,尝试和哭泣了几个小时,但是无法弄清楚如何将图像放入ImageView中,并使图像呈现未缩放,右对齐并且超出ImageView左侧的部分被裁剪。

ImageView定义如下:

<ImageView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:src="@drawable/bleh"
></ImageView>

layout_width设置为fill_parent,以使ImageView根据屏幕进行拉伸和收缩。

layout_height设置为wrap_content,因为ImageView的高度将始终固定,由图像确定。

我没有定义layout_gravity="right",因为我理解这与ImageView在其父级内的定位有关,在这种情况下没有影响,因为ImageView的宽度设置为fill_parent。

使用上述布局代码,图像会按比例缩放以适应ImageView。唯一可以防止缩放的方法是设置android:scaleType="center",但不幸的是,这会将图像居中。

有什么好的想法吗?否则,我目前正在考虑以下替代方案:

  • 子类化ImageView并实现自己的onDraw()方法。
  • 将全尺寸的ImageView放入ScrollView中,并将滚动固定到最右边(并禁用任何指示它是滚动视图的指示)。
2个回答

5

不要使用滚动视图,而是将图像放置在LinearLayout或RelativeLayout中。使布局的layout_width填充父级,而layout_height包裹内容。然后在ImageView上使用layout gravity right,并为宽度和高度均使用wrap_content。

<LinerLayout android:layout_width="wrap_content" 
  android:layout_height="wrap_content">
<ImageView android:layout_gravity="right"
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:src="@drawable/bleh"/>
</LinearLayout>

谢谢!非常喜欢!:D - voodoo98

2
@harmanjd:你犯了一个小错误,这是正确的方式: (抱歉我无法评论你的答案)
<LinearLayout android:layout_width="fill_parent" 
     android:layout_height="wrap_content"
     android:gravity="right">

    <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:src="@drawable/bleh"/>
    />
</LinearLayout>

我想在一行中放置一个TextView(用于名称)和一个ImageView(用于图像),并且我希望TextView左对齐,而ImageView右对齐。你能否建议一种方法? - CSharp
1
抱歉,我认为这不是请求建议的正确方法...此帖子有另一个请求。 - Ging3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接