Android:需要格式化布局的帮助

时间:2017-12-18 16:53:27

标签: java android xml layout

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

the picture

代码:

<?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>

这真是困扰我的边缘人......

3 个答案:

答案 0 :(得分:0)

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

<?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>

答案 1 :(得分:0)

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 :(得分:0)

您稍后提供的解决方案是正确的。

回答你的问题:添加负边距是否合适?

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

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