当我在模拟器上运行App时,Android Studio文本不符合layout_margin

时间:2018-12-13 07:45:01

标签: android android-studio android-layout

我正在尝试解决布局边距问题,在模拟器上运行应用程序后,状态文本不会出现在我希望的位置。 随附完整的布局代码。我该如何改进代码以减轻将来出现的问题?

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/colorPrimary"
tools:context=".SettingsActivity">

<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/settings_profile_image"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:src="@drawable/default_profile" />

<TextView
    android:id="@+id/settings_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="244dp"
    android:text="@string/user_name"
    android:textColor="@android:color/background_light"
    android:textSize="24sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/settings_user_status"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="260dp"
    android:text="@string/user_profile_status"
    android:textColor="@android:color/background_light"
    android:textSize="18sp" />

</RelativeLayout>

enter image description here

我想念什么?

3 个答案:

答案 0 :(得分:0)

如果要在用户名下方显示状态,请使用

android:layout_below="@+id/settings_username"

在您当前的布局中,marginTop没有用,垂直位置由

决定
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="260dp"

最好使用ContraintLayout,它会删除所有未使用的属性(例如,如果margin没有用处,则margin属性将被自动删除)。

答案 1 :(得分:0)

尝试此操作您只需删除 android:layout_marginBottom =“ 260dp” android:layout_alignParentBottom =“ true” 并添加 android:layout_below =“ @ settings_user_status中的+ id / settings_username“

<RelativeLayout 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/colorPrimary"
    tools:context=".SettingsActivity">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/settings_profile_image"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:src="@drawable/default_profile" />

    <TextView
        android:id="@+id/settings_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="244dp"
        android:text="@string/user_name"
        android:textColor="@android:color/background_light"
        android:textSize="24sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/settings_user_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:layout_below="@+id/settings_username"
        android:text="@string/user_profile_status"
        android:textColor="@android:color/background_light"
        android:textSize="18sp" />

</RelativeLayout>

答案 2 :(得分:0)

在第一处,您可能想要尝试android引入的约束布局作为android材质设计的一部分,该布局旨在避免嵌套视图的所有开销。在约束布局视图中,可以拖动和下垂视图,并且可以为边界分配8的倍数的边距。强烈建议使用约束布局,而不是旧的布局嵌套。