我的xml中有一个ImageView,如下所示:
<ImageView
android:id="@+id/ivMessage"
android:layout_width="@dimen/two_hundred_dp"
android:layout_height="@dimen/one_sixty_dp"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/ten_dp"
android:background="@drawable/rounded_rectangle_white"
android:scaleType="fitXY"
android:padding="@dimen/ten_dp"
tools:src="@drawable/logo" />
但是我从服务器获取的照片可以处于纵向和横向模式,我只想在发生这种情况时交换此高度和宽度。我试图将这些dp编程转换为dp,但这不起作用,并且dp更改了。有什么我想念的简单方法吗?
答案 0 :(得分:1)
由于您说的是来自服务器的图像可以是纵向图像,也可以是横向图像,因此您可以通过编程方式滑动尺寸。
第1步。确定图像是横向还是纵向
boolean landscape = false;
if(image.getHeight()>image.getWidth()){
//image is in portrait
landscape = false;
}else{
//image is in landscape
landscape = true;
}
第2步。相应地更改高度和宽度
if(landscape){
imageView.setWidth(200);
imageView.setHeight(160);
}
else{
imageView.setWidth(160);
imageView.setHeight(200);
}
答案 1 :(得分:0)
使用android:adjustViewBounds和maxHeight或minHeight属性,如下所示:
<ImageView
android:id="@+id/ivMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:maxWidth="@dimen/two_hundred_dp"
android:maxHeight="@dimen/one_sixty_dp"
android:adjustViewBounds="true"
android:layout_margin="@dimen/ten_dp"
android:background="@drawable/rounded_rectangle_white"
android:scaleType="fitXY"
android:padding="@dimen/ten_dp"
tools:src="@drawable/logo" />