相对布局搞砸了如何固定其位置

时间:2019-04-25 16:44:46

标签: android xml android-layout android-relativelayout

你好,我创建相对布局时会出现文本和媒体控制器按钮,当我开始播放歌曲时,它弄乱了我的布局,请告诉我这里的位置是代码和图片的固定位置,请帮助固定它,我不知道如何解决要修复相对布局位置,我正在创建mp3播放器,而我正面临此问题,请帮助我

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mediacontroller"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:layout_gravity="bottom"
    android:padding="4dp">

    <TextView
        android:id="@+id/song_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_marginStart="24dp"
        android:layout_marginEnd="10dp"
        android:layout_toStartOf="@+id/buttonBackward"
        android:ellipsize="end"
        android:maxLines="1"
        android:padding="2dp"
        android:text="Song Name - [details]"
        android:textColor="@android:color/white"
        android:textSize="12sp"
        android:textStyle="bold"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="24dp"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@+id/buttonBackward" />

    <TextView
        android:id="@+id/song_artist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/song_title"
        android:layout_alignParentStart="true"
        android:layout_marginStart="24dp"
        android:layout_marginEnd="10dp"
        android:layout_toStartOf="@+id/buttonBackward"
        android:padding="2dp"
        android:text="Singer Name"
        android:textColor="@android:color/white"
        android:textSize="12sp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="24dp"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@+id/buttonBackward" />

    <ImageView
        android:id="@+id/buttonForward"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="8dp"
        android:gravity="center"
  android:src="@drawable/ic_skip_next_black_24dp"
        android:textColor="@android:color/white"
        android:layout_alignParentRight="true"
        android:layout_marginRight="8dp" />

    <ImageView
        android:id="@+id/play_button_main"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_marginEnd="8dp"
        android:layout_toStartOf="@id/buttonForward"
      android:src="@drawable/play_button"
        android:visibility="visible"
        android:gravity="center"

        android:textColor="@android:color/white"
        android:layout_marginRight="8dp"
        android:layout_toLeftOf="@id/buttonForward" />
    <ImageView
        android:id="@+id/pausebtn"
        android:layout_width="40dp"
        android:visibility="gone"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_marginEnd="8dp"
        android:layout_toStartOf="@id/buttonForward"
        android:src="@drawable/pause_button"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:layout_marginRight="8dp"
        android:layout_toLeftOf="@id/buttonForward" />


    <ImageView
        android:id="@+id/buttonBackward"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_centerVertical="true"
        android:layout_marginEnd="8dp"
        android:layout_toStartOf="@id/play_button_main"
   android:src="@drawable/ic_prev"
        android:gravity="center"
        android:text="B"
        android:textColor="@android:color/white"
        android:layout_marginRight="8dp"
        android:layout_toLeftOf="@id/pausebtn" />

</RelativeLayout>

when app launch it look fine

and when i play song the layout messed up kindly check now

2 个答案:

答案 0 :(得分:1)

我发现将一个按钮设置为不可用而将另一个按钮设置为可见这一事实有些棘手,特别是考虑到约束限制以及其他按钮也与它们相关的事实。

buttonBackward的最后一行似乎是问题所在。 代替gone,将invisible用作播放和暂停按钮。

理想情况下,如果您坚持使用gone,那么我将使用包装器(例如FrameLayout),其中将存在两个按钮,并且所有空间限制都将与包装器有关,而不是按钮本身

答案 1 :(得分:1)

最好的解决方案是,单击该按钮时将播放按钮的可见性更改为android:visibility="invisible"或根据其他视图位置设置播放和暂停按钮的位置,而基于buttonBackward时则不能相反(像现在一样)在play_button_mainpausebtn的位置上。