基本上,我希望它是一个水平填充屏幕的正方形。但是要为高度指定什么?我使用FrameLayout作为示例,但它可能是任何视图。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="?">
答案 0 :(得分:1)
所以,仅使用布局是不可能的。
为此,您新手创建View
并扩展FrameLayout
,然后覆盖onMeasure
。
public class SquareFramelayout extends Framelayout {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
答案 1 :(得分:0)
如果使用ConstraintLayout,则可以使用app指定视图的DimensionRatio:layout_constraintDimensionRatio =&#34; 1&#34;
像这样:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:text="Hello World!"
app:layout_constraintDimensionRatio="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
(在ConstraintLayout中你不能使用match_parent,但你可以使用0dp,相当于match_constraint,如果你将水平约束设置为parent,它会匹配父级宽度)