【问题标题】:Android: Need help for formatting a layoutAndroid:需要帮助格式化布局
【发布时间】:2017-12-18 16:53:26
【问题描述】:

我尝试在 xml 中重现此设计,但我有一个问题,我无法正确放置编辑按钮,我希望它始终粘在卡片视图的底部,但卡片视图中的一个派对和外面的一部分,这是我的 xml 代码和设计(用于自定义警报对话框,有问题的按钮位于底部 id cpdEdit。):

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relative"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:gravity="center">



        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardCornerRadius="3dp"
            android:id="@+id/cardView">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="end">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="10dp"
                    android:layout_marginEnd="10dp"
                    android:adjustViewBounds="true"
                    android:maxHeight="30dp"
                    android:id="@+id/cdpClose"
                    android:maxWidth="30dp"
                    android:src="@drawable/close_ics" />

            </LinearLayout>


            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="40dp"
                android:paddingRight="40dp">


                <TextView
                    android:id="@+id/un"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="40dp"
                    android:text="Nom"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp" />

                <TextView
                    android:id="@+id/deu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/cdpName"
                    android:layout_marginTop="10dp"
                    android:text="Numero"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp" />

                <TextView
                    android:id="@+id/troi"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignStart="@+id/cdpName"
                    android:layout_below="@+id/cdpNumberPhone"
                    android:text="Adress"
                    android:layout_marginTop="10dp"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp" />

                <TextView
                    android:id="@+id/trois"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/cdpAdress"
                    android:layout_marginTop="10dp"
                    android:text="Info"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp" />

                <TextView
                    android:id="@+id/troiss"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_alignStart="@+id/troi"
                    android:layout_below="@+id/cdpInfo"
                    android:text="Note"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp" />


                <EditText
                    android:id="@+id/cdpName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/un"
                    android:enabled="false"
                    android:text="Mickael Belhassen"
                    android:textColor="#000000"
                    android:textSize="17sp" />

                <EditText
                    android:id="@+id/cdpNumberPhone"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/deu"
                    android:enabled="false"
                    android:text="0584688800"
                    android:textColor="#000000"
                    android:textSize="17sp" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentEnd="true"
                    android:layout_alignTop="@+id/cdpNumberPhone"
                    android:layout_marginEnd="12dp"
                    android:adjustViewBounds="true"
                    android:maxHeight="30dp"
                    android:maxWidth="30dp"
                    android:src="@drawable/copy_ics"
                    android:id="@+id/cdpCopyPhone" />

                <EditText
                    android:id="@+id/cdpAdress"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/troi"
                    android:enabled="false"
                    android:text="20 Dizengoff Street"
                    android:textColor="#000000"
                    android:textSize="17sp" />

                <EditText
                    android:id="@+id/cdpInfo"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/trois"
                    android:enabled="false"
                    android:text="Info supp"
                    android:textColor="#000000"
                    android:textSize="17sp" />

                <EditText
                    android:id="@+id/cdpNote"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/troiss"
                    android:enabled="false"
                    android:layout_marginBottom="40dp"
                    android:text="Note"
                    android:textColor="#000000"
                    android:textSize="17sp" />

            </RelativeLayout>


        </android.support.v7.widget.CardView>


    <Button
        android:id="@+id/cdpEdit"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="428dp"
        android:background="@drawable/buttonshapeedit"/>


    </RelativeLayout>

真正困扰我的是margintop ...

【问题讨论】:

  • 你有它应该是什么样子的图片吗?
  • 是的,我忘了,看我的帖子点击链接
  • 我不确定我是否遵循您的确切问题...但是您的卡片视图有一个包装内容...将其更改为 match_parent 并且它将删除顶部的边距。
  • 我希望蓝色按钮与照片中的一样。使用我制作的代码,它可以工作,但这不是一个好方法,因为根据屏幕,蓝色按钮并不总是在同一个地方。我希望这个按钮一半在卡片视图中,一半在外面,而不使用这么大的margintop。我希望按钮粘在卡片视图的底部,并留出最大 15dp 的边距
  • 啊。我现在明白了。在卡片视图之后移动按钮并将其添加到按钮中。 android:layout_marginBottom="25dp"

标签: java android xml layout


【解决方案1】:
My solution: is it good to use negative numbers?

<Button
        android:id="@+id/cdpEdit"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/cardView"
        android:layout_marginTop="-24dp"
        android:background="@drawable/buttonshapeedit"/>

【讨论】:

    【解决方案2】:

    您可以尝试以下代码(经过尝试和测试)

    <?xml version="1.0" encoding="utf-8"?>
    [![enter image description here][1]][1]<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/relative"
    android:orientation="vertical"
    android:background="@android:color/darker_gray">
    <LinearLayout
        android:id="@+id/lin_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        android:orientation="vertical"
        >
    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="25dp"
        app:contentPaddingLeft="40dp"
        app:contentPaddingRight="40dp"
        android:cardBackgroundColor="@android:color/white"
        android:id="@+id/cardView">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="end">
    
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="10dp"
                    android:layout_marginEnd="10dp"
                    android:adjustViewBounds="true"
                    android:maxHeight="30dp"
                    android:id="@+id/cdpClose"
                    android:maxWidth="30dp"
                    android:src="@drawable/ic_launcher_background"
                    android:layout_marginRight="10dp" />
    
            </LinearLayout>
    
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >
    
                <TextView
                    android:id="@+id/un"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginTop="40dp"
                    android:text="Nom"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <TextView
                    android:id="@+id/deu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/cdpName"
                    android:layout_marginTop="10dp"
                    android:text="Numero"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <TextView
                    android:id="@+id/troi"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignStart="@+id/cdpName"
                    android:layout_below="@+id/cdpNumberPhone"
                    android:text="Adress"
                    android:layout_marginTop="10dp"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp"
                    android:layout_alignLeft="@+id/cdpName" />
    
                <TextView
                    android:id="@+id/trois"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/cdpAdress"
                    android:layout_marginTop="10dp"
                    android:text="Info"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <TextView
                    android:id="@+id/troiss"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_alignStart="@+id/troi"
                    android:layout_below="@+id/cdpInfo"
                    android:text="Note"
                    android:textColor="@color/colorPrimary"
                    android:textSize="17sp"
                    android:layout_alignLeft="@+id/troi" />
    
    
                <EditText
                    android:id="@+id/cdpName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/un"
                    android:enabled="false"
                    android:text="Mickael Belhassen"
                    android:textColor="#000000"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <EditText
                    android:id="@+id/cdpNumberPhone"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/deu"
                    android:enabled="false"
                    android:text="0584688800"
                    android:textColor="#000000"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentEnd="true"
                    android:layout_alignTop="@+id/cdpNumberPhone"
                    android:layout_marginEnd="12dp"
                    android:adjustViewBounds="true"
                    android:maxHeight="30dp"
                    android:maxWidth="30dp"
                    android:src="@drawable/ic_launcher_background"
                    android:id="@+id/cdpCopyPhone"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="12dp" />
    
                <EditText
                    android:id="@+id/cdpAdress"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/troi"
                    android:enabled="false"
                    android:text="20 Dizengoff Street"
                    android:textColor="#000000"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <EditText
                    android:id="@+id/cdpInfo"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/trois"
                    android:enabled="false"
                    android:text="Info supp"
                    android:textColor="#000000"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
                <EditText
                    android:id="@+id/cdpNote"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/troiss"
                    android:enabled="false"
                    android:layout_marginBottom="40dp"
                    android:text="Note"
                    android:textColor="#000000"
                    android:textSize="17sp"
                    android:layout_alignParentLeft="true" />
    
            </RelativeLayout>
    
    
    </android.support.v7.widget.CardView>
    
    </LinearLayout>
    <Button
        android:id="@+id/cdpEdit"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:layout_alignBottom="@+id/lin_layout"
        android:background="@drawable/ic_launcher_background"/>
     </RelativeLayout>
    

    【讨论】:

    • 不起作用,因为 alignbottom 它粘在卡片视图的底部,但不允许超出一半
    【解决方案3】:

    你后面提供的解决方案是正确的。

    回答您的问题:添加负边距好吗?

    添加负边距没有害处,但您的布局不应妨碍所有类型的屏幕。即使您在 10.1 (2560*1600) 平板电脑或 3.7 (400*800) 手机中查看,按钮的位置也应保持不变。

    如需进一步参考,您可以参考此链接: Is it a bad practice to use negative margins in Android?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多