【问题标题】:Unable to put 3 buttons and 1 edit text inside a relative layout无法在相对布局中放置 3 个按钮和 1 个编辑文本
【发布时间】:2016-12-23 05:24:30
【问题描述】:

我无法将这 3 个按钮和 1 个编辑文本放在相关布局中。 基本上,我是顶部的列表视图,然后是列表视图下的相对视图。此相对视图将由第一行中的编辑文本和第二行中的 3 个按钮组成。

一切正常,但是,当我在相对布局中放置 1 个编辑文本和 3 个按钮时,出现错误 java.lang.IllegalStateException:RelativeLayout 中不能存在循环依赖

有人可以帮忙吗,非常感谢您的时间。 谢谢

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="app.com.date.MainActivity"
    android:background="@color/common_google_signin_btn_text_light_disabled">



    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/messageBox"
        android:id="@+id/chatroom"
        android:stackFromBottom="true"
        android:transcriptMode="alwaysScroll"
        android:dividerHeight="0dp"
        android:divider="@null"
        android:layout_alignParentBottom="false"
        android:layout_alignWithParentIfMissing="false" />

    <EditText
        android:layout_width="match_parent"
        android:inputType="text"
        android:ems="10"
        android:id="@+id/messageBox"
        android:textAppearance="@style/TextAppearance.AppCompat"
        android:freezesText="true"
        android:textSize="12sp"
        android:fontFamily="sans-serif"
        android:layout_alignParentBottom="false"
        android:layout_above="@+id/sendButton"
        android:breakStrategy="high_quality"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:paddingBottom="15dip"
        android:paddingTop="10dip"
        android:hint="send message" />



    <Button
        android:id="@+id/galleryButton"
        android:layout_below="@+id/messageBox"
        android:layout_alignParentStart="false"
        android:layout_alignParentBottom="false"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="false"
        android:layout_alignParentLeft="true" />

    <Button
        android:id="@+id/cameraButton"
        android:layout_below="@+id/messageBox"
        android:layout_alignParentBottom="false"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="false"
        android:layout_marginLeft="10dip"
        android:layout_toRightOf="@+id/galleryButton" />

    <Button
        android:layout_height="wrap_content"
        android:id="@+id/sendButton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="15dip"
        android:layout_width="75dip" />

</RelativeLayout>

【问题讨论】:

  • 这段代码对我来说非常好用。当为彼此设置两个视图的引用时,就会出现循环依赖。说button1在button2的左边,button2在button1的右边。这会导致循环依赖错误。
  • 这段代码很好,但我想把编辑文本和 3 按钮放在一个额外的相对布局中
  • 外部相对布局 -- 列表视图 -- 内部相对布局(编辑文本,3 个按钮) -- 内部相对布局结束 -- 外部相对布局结束
  • 您确切需要的布局是什么?可以发图或者画图吗?

标签: android


【解决方案1】:

你可以试试这段代码,希望对你有帮助..

 <?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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">


<ListView
    android:id="@+id/chatroom"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/ll"
    android:layout_alignParentBottom="false"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_alignWithParentIfMissing="false"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:stackFromBottom="true"
    android:transcriptMode="alwaysScroll" />

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical">

    <EditText
        android:id="@+id/messageBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="false"
        android:background="@android:color/transparent"
        android:breakStrategy="high_quality"
        android:ems="10"
        android:fontFamily="sans-serif"
        android:freezesText="true"
        android:hint="send message"
        android:inputType="text"
        android:paddingBottom="15dip"
        android:paddingTop="10dip"
        android:textAppearance="@style/TextAppearance.AppCompat"
        android:textSize="12sp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/galleryButton"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <Button
            android:id="@+id/cameraButton"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/galleryButton" />

        <Button
            android:id="@+id/sendButton"
            android:layout_width="75dp"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true" />

    </RelativeLayout>
   </LinearLayout>
</RelativeLayout>

【讨论】:

  • 你太棒了,这段代码就像一个魅力。我刚刚将按钮布局权重更改为 .15 .15 .20 ,前 2 个按钮出现在左侧,这是我想要的,但对于最后一个按钮,我试图将重力改为向右但它不工作,我如何移动最后一个按钮到最右边...谢谢
  • 欢迎兄弟..如果这可以帮助你,请接受并支持这个..谢谢
  • 欢迎,肯定会这样做..当所有布局权重均为 0.10 时,您能否将第三个按钮移至最右边
【解决方案2】:

尝试相同的代码,只需稍作修改。对我来说效果很好。

<?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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="app.com.date.MainActivity"
android:background="@color/common_google_signin_btn_text_light_disabled">



<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_above="@+id/messageBox"
    android:id="@+id/chatroom"
    android:stackFromBottom="true"
    android:transcriptMode="alwaysScroll"
    android:dividerHeight="0dp"
    android:divider="@null"
    android:layout_alignParentBottom="false"
    android:layout_alignWithParentIfMissing="false" />

<EditText
    android:layout_width="match_parent"
    android:inputType="text"
    android:ems="10"
    android:id="@+id/messageBox"
    android:textAppearance="@style/TextAppearance.AppCompat"
    android:freezesText="true"
    android:textSize="12sp"
    android:fontFamily="sans-serif"
    android:layout_alignParentBottom="false"
    android:layout_above="@+id/sendButton"
    android:breakStrategy="high_quality"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:paddingBottom="15dip"
    android:paddingTop="10dip"
    android:hint="send message" />



<Button
    android:id="@+id/galleryButton"
    android:layout_below="@+id/messageBox"
    android:layout_alignParentStart="false"
    android:layout_alignParentBottom="false"
    android:layout_width="50dip"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="false"
    android:layout_alignParentLeft="true" />

<Button
    android:id="@+id/cameraButton"
    android:layout_below="@+id/messageBox"
    android:layout_alignParentBottom="false"
    android:layout_width="50dip"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="false"
    android:layout_marginLeft="10dip"
    android:layout_toRightOf="@+id/galleryButton" />

<Button
    android:layout_height="wrap_content"
    android:id="@+id/sendButton"
    android:layout_width="75dip"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

【讨论】:

    【解决方案3】:

    我更新了代码请试试这个

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            android:id="@+id/btnLL"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true" >
    
            <Button
                android:id="@+id/testbutton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Save" />
    
            <Button
                android:id="@+id/cancelButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Cancel" />
    
            <Button
                android:id="@+id/cancelButton1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Cancel" />
    
            <EditText
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:background="#ffffff"
                android:text="edittext " />
        </LinearLayout>
    
        <ListView
            android:id="@+id/LstPeriodOptions"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@id/btnLL" />
    
    </RelativeLayout>
    

    【讨论】:

      【解决方案4】:

      我刚刚发布了最简单的布局。

              <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:id="@+id/activity_main"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:paddingBottom="@dimen/activity_vertical_margin"
                      android:paddingLeft="@dimen/activity_horizontal_margin"
                      android:paddingRight="@dimen/activity_horizontal_margin"
                      android:paddingTop="@dimen/activity_vertical_margin">               
      
                      <ListView
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:id="@+id/chatroom"
                          android:dividerHeight="0dp"
                          android:layout_above="@+id/messageBox"
                          android:divider="@null"/>
      
                      <EditText
                          android:layout_width="match_parent"
                          android:layout_height="wrap_content"
                          android:inputType="text"
                          android:ems="10"
                          android:id="@+id/messageBox"
                          android:textAppearance="@style/TextAppearance.AppCompat"
                          android:textSize="12sp"
                          android:fontFamily="sans-serif"
                          android:background="#eee"
                          android:paddingTop="15dp"
                          android:paddingBottom="15dp"
                          android:paddingStart="5dp"
                          android:paddingLeft="5dp"
                          android:paddingEnd="5dp"
                          android:paddingRight="5dp"
                          android:layout_above="@+id/galleryButton"                
                          android:hint="send message" />               
      
                      <Button
                          android:id="@+id/galleryButton"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_alignParentBottom="true"
                          android:layout_alignParentLeft="true"
                          android:layout_alignParentStart="true"
                          android:text="gallery"/>
      
                      <Button
                          android:id="@+id/cameraButton"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_centerHorizontal="true"
                          android:text="Camera"                
                          android:layout_toStartOf="@+id/sendButton"
                          android:layout_toLeftOf="@+id/sendButton"
                          android:layout_toRightOf="@+id/galleryButton"
                          android:layout_toEndOf="@+id/galleryButton"
                          android:layout_below="@+id/messageBox"/>
      
                      <Button
                          android:layout_height="wrap_content"
                          android:layout_width="wrap_content"
                          android:id="@+id/sendButton"
                          android:text="Send"
                          android:layout_alignParentBottom="true"
                          android:layout_alignParentRight="true"
                          android:layout_alignParentEnd="true" />
      
           </RelativeLayout>
      

      UI 不应该更深层次。尝试尽可能简单地完成。那么只有 UI 会更快。

      所以你的布局会像

      【讨论】:

        猜你喜欢
        • 2015-07-24
        • 2014-12-15
        • 1970-01-01
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 1970-01-01
        相关资源
        最近更新 更多