在布局xml

时间:2016-04-19 20:15:23

标签: android android-layout android-linearlayout

视图是否应该使其高度与宽度相同?

或用于此目的的任何其他布局,因为对于矢量图像,必须提供宽度和高度。

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/googleLoginBtn"
            android:orientation="horizontal"
            android:layout_centerVertical="true">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical">


                <ImageView
                    android:layout_width="fill_parent"
                    android:layout_height="<height should be equal to the width>"
                    app:srcCompat="@drawable/simple"
                    tools:ignore="MissingPrefix"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Snappy"
                    android:textColor="#FF4081"
                    android:textSize="30dp"
                    android:singleLine="true"
                    android:gravity="center"
                    android:layout_margin="10dp"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="Type less, do more. Fastest way to transfer money &amp; make other transactions."
                    android:layout_margin="10dp"/>

            </LinearLayout>


            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/simple"
                    tools:ignore="MissingPrefix"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Smart"
                    android:textColor="#FF4081"
                    android:textSize="30dp"
                    android:gravity="center"
                    android:layout_margin="10dp"/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Type less, do more. Fastest way to transfer money &amp; make other transactions."
                    android:layout_margin="10dp"/>

            </LinearLayout>
</LinearLayout>

4 个答案:

答案 0 :(得分:2)

如果不使用自定义ImageView,则无法完全使用xml。这将是一个解决方案:

public class SquareImageView extends ImageView {
  @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = getMeasuredWidth();
    setMeasuredDimension(width, width);
  }
}

但是,如果您的图片已经是Square,则可以使用普通ImageView

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true" />

第三种解决方案是直接在代码中设置宽度和高度:

LayoutParams params = imageView.getLayoutParams();
params.height = params.width ;
imageView.setLayoutParams(params);

答案 1 :(得分:2)

您应该可以使用Percent support library来实现此目的。 您可以使用PercentRelativeLayout替换LinearLayout内的ImageView,并将其他视图android:layout_below替换为ImageViewxmlns:app="http://schemas.android.com/apk/res-auto"。 }。

我将假设您已将此文件中的应用程序命名空间定义为PercentFrameLayout,因为我看到您使用命名空间。

一旦您包含了相应的支持库, <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <android.support.percent.PercentFrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="fill_parent" app:layout_aspectRatio="100%" app:srcCompat="@drawable/simple" tools:ignore="MissingPrefix"/> </android.support.percent.PercentFrameLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Snappy" android:textColor="#FF4081" android:textSize="30dp" android:singleLine="true" android:gravity="center" android:layout_margin="10dp"/> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Type less, do more. Fastest way to transfer money &amp; make other transactions." android:layout_margin="10dp"/> </LinearLayout> 方法将如下所示:

Const WM_NCHITTEST As Integer = &H84
Const HTCLIENT As Integer = &H1
Const HTCAPTION As Integer = &H2

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    Select Case m.Msg
        Case WM_NCHITTEST
            MyBase.WndProc(m)
            If m.Result = IntPtr.op_Explicit(HTCLIENT) Then m.Result = IntPtr.op_Explicit(HTCAPTION)
        Case Else
            MyBase.WndProc(m)
    End Select
End Sub

答案 2 :(得分:0)

仅作一点更新::API级别26.1.0中不推荐使用PercentFrameLayout类。考虑改用ConstraintLayout和关联的布局。这里的更多信息:https://developer.android.com/reference/android/support/percent/PercentFrameLayout

答案 3 :(得分:0)

使用this

Component