写一个宽度到边,高度与宽度相等的ImageView怎么实现
暂时考虑以下几种实现方式:
1 百分比布局
PercentRelativeLayout 设置宽度100% 宽高比100%
<ImageView
android:id="@+id/imageView"
app:layout_widthPercent="100%"
app:layout_aspectRatio="100%"
app:srcCompat="@mipmap/ic_launcher"
/>
2 ConstraintLayout 约束布局
设置宽度match_parent 高度0dp 宽高比1:1 两种写法, 如下
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="text"
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
3 自定义ImgeView 重写onMeasure()方法
设置宽度match_parent 高度 wrap_content 或0dp ...
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
4
通过java代码动态设置ImageView
PercentRelativeLayout 的属性
<!--设置相对父控件百分比-->
app:layout_widthPercent
app:layout_heightPercent
<!--设置控件相对于父控件的边距百分比-->
app:layout_marginLeftPercent
app:layout_marginTopPercent
app:layout_marginRightPercent
app:layout_marginBottomPercent
<!--距离开始和结束的位置-->
app:layout_marginStartPercent
app:layout_marginEndPercent
<!--根据宽或者高按比例设置另一个-->
android:layout_width="300dp"
app:layout_aspectRatio