layout_width = match_parent,layout_height =与width相同

时间:2018-04-10 16:05:00

标签: android android-layout

基本上,我希望它是一个水平填充屏幕的正方形。但是要为高度指定什么?我使用FrameLayout作为示例,但它可能是任何视图。

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="?">

2 个答案:

答案 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,它会匹配父级宽度)