如何根据屏幕自动改变按钮的高度?

时间:2018-12-01 18:44:22

标签: android android-layout android-button android-relativelayout

我在imageview下方有3个按钮,但我希​​望它们根据屏幕比例/大小自动更改其高度。

<?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=".Main3Activity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="144dp"
        android:layout_height="133dp"
        app:srcCompat="@android:drawable/btn_star_big_on"
        tools:layout_editor_absoluteX="133dp"
        tools:layout_editor_absoluteY="40dp" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/imageView"
        android:text="Button1"
        tools:layout_editor_absoluteX="36dp"
        tools:layout_editor_absoluteY="184dp" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/button1"
        android:text="Button2"
        tools:layout_editor_absoluteX="161dp"
        tools:layout_editor_absoluteY="260dp" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/button2"
        android:text="Button3"
        tools:layout_editor_absoluteX="161dp"
        tools:layout_editor_absoluteY="340dp" />



</android.support.constraint.ConstraintLayout>

在6英寸的屏幕和5英寸的屏幕中是这样的: enter image description here

enter image description here

在这里,我给您留下一张关于我想要它的外观的编辑图像:

enter image description here

enter image description here

感谢您的帮助。 (我认为在layout_height中使用match_parent将是解决方案,但我已经尝试过,但我不知道如何使用它)

2 个答案:

答案 0 :(得分:1)

如果您想使用LinearLayout并为所有3个按钮设置相等的权重:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".Main3Activity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="144dp"
        android:layout_height="133dp"
        android:layout_gravity="center_horizontal"
        app:srcCompat="@android:drawable/btn_star_big_on" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:text="Button1"
        android:layout_weight="1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:text="Button2"
        android:layout_weight="1" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="15dp"
        android:text="Button3"
        android:layout_weight="1" />
</LinearLayout>

答案 1 :(得分:0)

您可以使用LinearLayout或TableLayout并将所有按钮的高度设为 match_parent ,然后为所有按钮赋予 weight 属性

android:layout_weight="1"