android relativelayout,一团糟

时间:2018-07-16 13:09:55

标签: java android

在编辑器中,按钮按应有的方式排列,但是在实际设备中,按钮被弄乱了。为什么会这样?

enter image description here

enter image description here

enter image description here 这是导航栏的fxml文件,它使用相对布局。

<?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"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="match_parent"
        android:layout_height="65dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:adjustViewBounds="false"
        android:cropToPadding="false"
        app:srcCompat="@drawable/navbar" />

    <Button
        android:id="@+id/homeBtn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_centerInParent="@+id/imageView4"
        android:layout_alignTop="@+id/imageView4"
        android:layout_marginTop="6dp"
        android:layout_marginStart="30dp"
        android:background="@drawable/home_icon" />

    <Button
        android:id="@+id/optionsBtn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_centerInParent="@+id/imageView4"
        android:layout_alignTop="@+id/imageView4"
        android:layout_marginTop="6dp"
        android:layout_marginStart="100dp"
        android:background="@drawable/options_icon" />

    <Button
        android:id="@+id/micBtn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_alignTop="@+id/homeBtn"
        android:layout_centerHorizontal="true"
        android:background="@drawable/mic_icon" />

    <Button
        android:id="@+id/connectionBtn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_centerInParent="@+id/imageView4"
        android:layout_alignTop="@+id/imageView4"
        android:layout_marginTop="6dp"
        android:layout_marginStart="240dp"
        android:background="@drawable/con_icon" />

    <Button
        android:id="@+id/aboutBtn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_centerInParent="@+id/imageView4"
        android:layout_alignTop="@+id/imageView4"
        android:layout_marginTop="6dp"
        android:layout_marginStart="310dp"
        android:background="@drawable/about_icon" />
</RelativeLayout>

请帮助我,我是android的新手,我还在尝试。无论我多少更改按钮的x位置,当它已经编译并在android上运行时,它都不会停留在它们的位置,但是在编辑器上,它看起来很好。

1 个答案:

答案 0 :(得分:1)

首先,您将不同的边距应用于按钮。这就是为什么并非所有人到邻居(marginStart的视线都相同的原因。

使用LinearLayout连续对齐按钮并加权Button的宽度,这样会减少很多麻烦

<?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"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="5">

    <Button
        android:id="@+id/homeBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/home_icon" />

    <Button
        android:id="@+id/optionsBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/options_icon" />

    <Button
        android:id="@+id/micBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/mic_icon" />

    <Button
        android:id="@+id/connectionBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1""
        android:background="@drawable/con_icon" />

    <Button
        android:id="@+id/aboutBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/about_icon" />

</LinearLayout>

请注意,将每个Button的宽度设置为0dp,并将其他权重设置为1,这将导致每个Button具有相同的智慧。根据需要应用其他边距...