【问题标题】:Android RelativeLayout cut off at the bottomAndroid RelativeLayout 在底部截断
【发布时间】:2015-11-15 15:13:18
【问题描述】:

我有这样的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/screen01_bg"
    android:gravity="center_horizontal">

    <RelativeLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#7fb9e5"
        android:layout_gravity="center_horizontal"
        android:paddingTop="10dp"
        android:paddingBottom="10dip">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Login with an existing account"
            android:id="@+id/textView5"
            android:layout_gravity="center"
            android:textColor="#FFF"
            android:textStyle="bold"
            android:layout_centerInParent="true"/>
    </RelativeLayout >

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="20dp">
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="2" >

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/facebook"
                android:src="@drawable/facebook"
                android:adjustViewBounds="true"
                android:cropToPadding="false"
                android:background="#00000000"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="20dp">
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="2" >

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/twitter"
                android:src="@drawable/twitter"
                android:adjustViewBounds="true"
                android:cropToPadding="false"
                android:background="#00000000"
                android:scaleType="fitXY"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:nestedScrollingEnabled="false"
        android:gravity="fill_horizontal|top|center_vertical|fill"
        android:paddingTop="5dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="or"
            android:id="@+id/textView9"
            android:singleLine="true"
            android:textStyle="italic"
            android:layout_centerInParent="true"
            android:textColor="#FFF" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Login with an email and password"
            android:id="@+id/textView10"
            android:singleLine="true"
            android:layout_below="@+id/textView9"
            android:textStyle="bold"
            android:layout_centerInParent="true"
            android:textColor="#FFF" />
        <EditText
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView10"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="26dp"
            android:inputType="textEmailAddress"
            android:hint="Email"
            android:gravity="center_horizontal"
            android:ems="10"
            android:background="@drawable/rect"
            android:padding="10px">
            <requestFocus />
        </EditText>
        <EditText
            android:id="@+id/password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/email"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="26dp"
            android:ems="10"
            android:hint="Password"
            android:gravity="center_horizontal"
            android:background="@drawable/rect"
            android:inputType="textPassword"
            android:padding="10px">
        </EditText>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Login"
            android:id="@+id/login_button"
            android:layout_below="@+id/password"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="26dp"
            android:background="@drawable/login_button"
            >
        </Button>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="@string/create_new_account"
            android:id="@+id/create_account"
            android:layout_below="@+id/login_button"
            android:singleLine="true"
            android:textStyle="italic"
            android:layout_centerHorizontal="true"
            android:textColor="#FFF" />
    </RelativeLayout>

</LinearLayout>

它在 Android Studio 的预览中显示正常,但是当我运行它时,内容在底部被截断。 这是屏幕截图:

我不知道可能的原因是什么。 login_button 布局在这里:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#7fb9e5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <corners android:radius="0dp" />
    <stroke android:width="5px" android:color="#FFF" />
</shape>

只是一个带边框的简单按钮。 那么有什么更好的方法或如何解决这个问题?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    使用这个布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ee3"
        android:gravity="center_horizontal">
    
        <RelativeLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#7fb9e5"
            android:layout_gravity="center_horizontal"
            android:paddingTop="10dp"
            android:paddingBottom="10dip">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="Login with an existing account"
                android:id="@+id/textView5"
                android:layout_gravity="center"
                android:textColor="#FFF"
                android:textStyle="bold"
                android:layout_centerInParent="true"/>
        </RelativeLayout >
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="20dp">
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="2" >
    
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/facebook"
                    android:src="@drawable/facebook"
                    android:adjustViewBounds="true"
                    android:cropToPadding="false"
                    android:background="#00000000"
                    android:scaleType="fitXY"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="20dp">
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="2" >
    
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/twitter"
                    android:src="@drawable/ic_fb_icon"
                    android:adjustViewBounds="true"
                    android:cropToPadding="false"
                    android:background="#00000000"
                    android:scaleType="fitXY"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
    android:gravity="center_horizontal"
            android:paddingTop="5dp">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="or"
                android:id="@+id/textView9"
                android:singleLine="true"
                android:textStyle="italic"
                android:layout_centerInParent="true"
                android:textColor="#FFF" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="Login with an email and password"
                android:id="@+id/textView10"
                android:singleLine="true"
                android:layout_below="@+id/textView9"
                android:textStyle="bold"
                android:layout_centerInParent="true"
                android:textColor="#FFF" />
            <EditText
                android:id="@+id/email"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView10"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="26dp"
                android:inputType="textEmailAddress"
                android:hint="Email"
                android:gravity="center_horizontal"
                android:ems="10"
                android:background="#333"
                android:padding="10px">
                <requestFocus />
            </EditText>
            <EditText
                android:id="@+id/password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/email"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="26dp"
                android:ems="10"
                android:hint="Password"
                android:gravity="center_horizontal"
                android:background="#333"
                android:inputType="textPassword"
                android:padding="10px">
            </EditText>
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Login"
                android:id="@+id/login_button"
                android:layout_below="@+id/password"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="26dp"
                android:background="@drawable/sobuttonbg"
                />
    
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="create_new_account"
                android:id="@+id/create_account"
                android:layout_below="@+id/login_button"
                android:singleLine="true"
                android:textStyle="italic"
                android:layout_centerHorizontal="true"
                android:textColor="#FFF" />
        </LinearLayout>
    </LinearLayout>
    

    **注意:请相应地更改您的图标

    【讨论】:

    • 这是我之前做的,我认为没有其他选择
    • 这个在我的系统上显示精确的用户界面,请使用这个
    【解决方案2】:

    您需要指定minHeightminWidth 属性并将它们设置为0dp 并将padding 属性设置为边框和按钮文本之间的间距所需的任何值。

    以下对我有用:

    按钮背景可绘制:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/pressedButtonBlue" />
                <corners android:radius="36dp"/>
            </shape>
        </item>
        <item android:state_enabled="false">
            <shape android:shape="rectangle">
                <solid android:color="@color/disabledButtonBlue" />
                <corners android:radius="36dp"/>
            </shape>
        </item>
        <item android:state_enabled="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/defaultButtonBlue" />
                <corners android:radius="36dp"/>
            </shape>
        </item>
        <item android:state_focused="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/pressedButtonBlue" />
                <corners android:radius="36dp"/>
            </shape>
        </item>
        <item>
            <shape android:shape="rectangle">
                <solid android:color="@color/defaultButtonBlue" />
                <corners android:radius="36dp"/>
            </shape>
        </item>
    </selector>
    

    布局:

    <RelativeLayout
        android:id="@+id/new_message_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:padding="5dp">
        <Button
            android:id="@+id/cancel_new_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:gravity="center"
            android:layout_centerVertical="true"
            android:minHeight="0dp"
            android:minWidth="0dp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingRight="15dp"
            android:paddingLeft="15dp"
            android:background="@drawable/button_bg"
            android:text="Cancel"
            android:textAllCaps="false"
            android:textColor="@android:color/white"
            android:textSize="14sp" />
    </RelativeLayout>
    

    【讨论】:

      【解决方案3】:
      1. 你不能在形状 xml 中这样做

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        

      这样做

      <solid android:color="#7fb9e5"/>
      
      1. 对于login_buttonemail,将layout_marginBottom26dp 减少到5dp

         <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Login"
            android:id="@+id/login_button"
            android:layout_below="@+id/password"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/login_button"/>
        

      【讨论】:

      • 你能简单解释一下为什么放 26dp 不显示吗?现在我更改为 5dp,最后一个 TextView create_account 没有显示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多