我有一个imageview。我想让它的宽度为fill_parent。我想让它的高等于宽度。例如:
<ImageView
android:layout_width="fill_parent"
android:layout_height="whatever the width ends up being" />
在布局文件中,不需要创建自己的视图类,这样的事情可能吗?
谢谢
我有一个imageview。我想让它的宽度为fill_parent。我想让它的高等于宽度。例如:
<ImageView
android:layout_width="fill_parent"
android:layout_height="whatever the width ends up being" />
在布局文件中,不需要创建自己的视图类,这样的事情可能吗?
谢谢
当前回答
我确实喜欢这个-
layout.setMinimumHeight(layout.getWidth());
其他回答
也许这能回答你的问题:
<ImageView
android:id="@+id/cover_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true" />
对于这种特定的情况,您可以忽略scaleType属性。
我不认为有任何方法可以在XML布局文件中这样做,我不认为android:scaleType属性会像你想要的那样工作。 唯一的方法是通过编程来实现。您可以将宽度设置为fill_parent,并且可以将屏幕宽度作为视图的高度,也可以使用View. getwidth()方法。
如果你的图像视图在一个约束布局中,你可以使用以下约束来创建一个正方形的图像视图,确保使用1:1来制作正方形
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/ivImageView"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
为了将ImageView设置为屏幕的一半,你需要为ImageView添加以下内容:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
然后将高度设置为宽度,需要在代码中完成。在你的GridView适配器的getView方法中,设置ImageView的高度等于它的测量宽度:
mImageView.getLayoutParams().height = mImageView.getMeasuredWidth();
在Android中26.0.0 PercentRelativeLayout已弃用。
解决这个问题的最好方法是使用这样的ConstraintLayout:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/you_image"
app:layout_constraintDimensionRatio="1:1"/>
</android.support.constraint.ConstraintLayout>
下面是一个关于如何将ConstraintLayout添加到项目中的教程。