LinearLayout按钮高度应该是match_parent但是有maxHeight,这可能吗?

时间:2017-12-15 12:18:03

标签: java android xml layout

我的MainActivity布局是一个`LinearLayout,垂直方向,分为两半。上半部分的重量为10,包含一个ImageView。下半部分用于三个按钮。

按钮宽度应为wrap_content,但宽度至少为230dp =没问题。

现在我的问题:

我希望按钮的高度至少与按钮的高度一样,以正确显示按钮的文本。但!如果有更多的空间,那么按钮应该至少高60dp。我怎样设法做到这一点?

我尝试将layout_height设置为:wrap_content和minHeight =" 60dp"。但如果屏幕太小,则屏幕上可能无法显示/显示一个或两个按钮。

所以我想到了Height =" match_parent"并设置max_height =" 60dp"代替。但这并没有做任何事情。无论如何,每个按钮将覆盖1/3的区域。

以下是图片说明:https://imgur.com/a/TUkZd

我希望图片位于屏幕的上方50%,下方50%包含3个按钮。你应该至少能够阅读按钮text = wrap_content ...但是如果在50%以下有很多空间。然后按钮可以更大一些。我无法做到这一点。

XML代码:

<?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:background="@color/sligthly_grey"
    android:orientation="vertical"
    tools:context="com.example.MainActivity">


    <ImageView
        android:id="@+id/imageView_picture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        app:srcCompat="@drawable/img_picture"
        tools:ignore="ContentDescription" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:layout_weight="10"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="20dp">

        <Button
            android:minWidth="230dp"
            android:id="@+id/btn_one"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:text="Btn one"
            android:textSize="18sp" />

        <Button
            android:minWidth="230dp"
            android:id="@+id/btn_two"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:text="Btn two"
            android:textSize="18sp" />

        <Button
            android:minWidth="230dp"
            android:id="@+id/btn_three"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:text="Btn three"
            android:textSize="18sp" />

    </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

您需要使用scrollview,以便在屏幕较小时,其他buttons应显示为minHeightminWidth属性。使用Scrollview可以解决您的问题。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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">

<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="wrap_content"
    android:background="@color/grey"
    android:orientation="vertical">


    <ImageView
        android:id="@+id/imageView_picture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        app:srcCompat="@drawable/ic_delete_grey"
        tools:ignore="ContentDescription" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:layout_weight="10"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="20dp">

        <Button
            android:id="@+id/btn_one"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:minHeight="60dp"
            android:minWidth="230dp"
            android:text="Btn one"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_two"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:minHeight="60dp"
            android:minWidth="230dp"
            android:text="Btn two"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_three"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:minHeight="60dp"
            android:minWidth="230dp"
            android:text="Btn three"
            android:textSize="18sp" />

    </LinearLayout>

</LinearLayout>
</ScrollView>

答案 1 :(得分:0)

我从布局后的问题得到的应该根据需要工作。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/absoluteLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <ImageView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:src="@drawable/rounded_square" />

</RelativeLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="10dp"
        android:text="Button2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_alignParentBottom="true"
        android:text="Button3" />

</LinearLayout>

如果您希望按钮为宽度wrap_content,请使用左右padding属性。以下是上面的输出。您需要为横向模式创建其他布局。 enter image description here