我的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>
答案 0 :(得分:0)
您需要使用scrollview
,以便在屏幕较小时,其他buttons
应显示为minHeight
和minWidth
属性。使用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
属性。以下是上面的输出。您需要为横向模式创建其他布局。