【问题标题】:Buttons position change in relative layout相对布局中的按钮位置变化
【发布时间】:2019-09-24 08:54:05
【问题描述】:

我正在开发我的第一个 Android 应用,它应该是一个计算器。

我为应用程序使用了相对布局,放置视图(主要是按钮)并写下操作代码。

代码可以编译,但是当我在虚拟机上运行它时,所有按钮都重叠了..

这就是应用的显示方式:

这就是它在虚拟机上的样子:

我尝试观看一些教程,但我找不到真正的问题。

我也尝试切换到约束布局,但似乎没有任何改变。

XML 代码:

    <?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/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/btn4"
        android:layout_alignLeft="@+id/btn4"
        android:layout_alignTop="@+id/btndiv"
        android:text="7" />

    <Button
        android:id="@+id/btn8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="114dp"
        android:layout_marginLeft="114dp"
        android:layout_marginTop="302dp"
        android:gravity="center"
        android:text="8" />

    <Button
        android:id="@+id/btn9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="301dp"
        android:layout_marginEnd="114dp"
        android:layout_marginRight="114dp"
        android:text="9" />

    <Button
        android:id="@+id/btndiv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnmol"
        android:layout_marginTop="300dp"
        android:layout_marginEnd="21dp"
        android:layout_marginRight="21dp"
        android:text="/" />

    <Button
        android:id="@+id/btn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="21dp"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="360dp"
        android:layout_marginBottom="323dp"
        android:text="4" />

    <Button
        android:id="@+id/btn5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="115dp"
        android:layout_marginLeft="115dp"
        android:layout_marginTop="359dp"
        android:layout_marginBottom="324dp"
        android:text="5" />

    <Button
        android:id="@+id/btn6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="359dp"
        android:layout_marginEnd="112dp"
        android:layout_marginRight="112dp"
        android:layout_marginBottom="324dp"
        android:layout_alignLeft="@+id/btn9"
        android:text="6" />

    <Button
        android:id="@+id/btnmol"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="357dp"
        android:layout_marginEnd="21dp"
        android:layout_marginRight="21dp"
        android:layout_marginBottom="326dp"
        android:text="*" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="21dp"
        android:layout_marginLeft="21dp"
        android:layout_marginBottom="270dp"
        android:text="1" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="115dp"
        android:layout_marginLeft="115dp"
        android:layout_marginBottom="270dp"
        android:text="2" />

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="111dp"
        android:layout_marginRight="111dp"
        android:layout_marginBottom="269dp"
        android:text="3" />

    <Button
        android:id="@+id/btnadd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="21dp"
        android:layout_marginRight="21dp"
        android:layout_marginBottom="267dp"
        android:text="+" />

    <Button
        android:id="@+id/btnclear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="21dp"
        android:layout_marginLeft="21dp"
        android:layout_marginBottom="212dp"
        android:text="clear" />

    <Button
        android:id="@+id/btn0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="116dp"
        android:layout_marginLeft="116dp"
        android:layout_marginBottom="213dp"
        android:text="0" />

    <Button
        android:id="@+id/btneq"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="111dp"
        android:layout_marginRight="111dp"
        android:layout_marginBottom="212dp"
        android:text="=" />

    <Button
        android:id="@+id/btnsub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="21dp"
        android:layout_marginRight="21dp"
        android:layout_marginBottom="212dp"
        android:text="-" />

    <TextView
        android:id="@+id/textinfo"
        android:layout_width="381dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="90dp"
        android:layout_marginEnd="22dp"
        android:layout_marginRight="22dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/textres"
        android:layout_width="380dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="46dp"
        android:layout_marginEnd="22dp"
        android:layout_marginRight="22dp"
        android:text="TextView" />
</RelativeLayout>

【问题讨论】:

    标签: android layout android-relativelayout


    【解决方案1】:

    从您发布的代码中修改了两行。

    <Button
            android:id="@+id/btn7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/btn4"
            android:layout_alignLeft="@+id/btn4"
            android:layout_alignTop="@+id/btndiv"
            android:text="7" />
    
    <Button
            android:id="@+id/btn8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="114dp"
            android:layout_marginLeft="114dp"
            android:layout_marginTop="302dp"
            android:gravity="center"
            android:text="8" />
    
    <Button
            android:id="@+id/btn9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="301dp"
            android:layout_marginEnd="114dp"
            android:layout_marginRight="114dp"
            android:text="9" />
    
    <Button
            android:id="@+id/btndiv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/btnmol"
            android:layout_marginTop="300dp"
            android:layout_marginEnd="21dp"
            android:layout_marginRight="21dp"
            android:text="/" />
    
    <Button
            android:id="@+id/btn4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="21dp"
            android:layout_marginLeft="21dp"
            android:layout_below="@+id/btn7"
            android:text="4" />
    
    <Button
            android:id="@+id/btn5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="115dp"
            android:layout_marginLeft="115dp"
            android:layout_below="@+id/btn7"
            android:text="5" />
    
    <Button
            android:id="@+id/btn6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="112dp"
            android:layout_marginRight="112dp"
            android:layout_alignLeft="@+id/btn9"
            android:layout_below="@+id/btn7"
            android:text="6" />
    
    <Button
            android:id="@+id/btnmol"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginEnd="21dp"
            android:layout_marginRight="21dp"
            android:layout_marginBottom="326dp"
            android:layout_below="@+id/btn7"
            android:text="*" />
    

    【讨论】:

      【解决方案2】:

      你可以试试这个布局作为参考,

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
      
      
      
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="99dp"
              android:orientation="vertical" android:layout_weight="0.67">
      
      
      
          <TextView
                  android:id="@+id/txtSolution"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.50"
                  android:gravity="right"
                  android:paddingRight="10sp"
                  android:paddingTop="5sp"
                  android:textSize="15pt"
                  android:textStyle="bold" />
      
      
      
      
          <TextView
                  android:id="@+id/txtInput"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.50"
                  android:gravity="right"
                  android:paddingRight="10sp"
                  android:paddingTop="5sp"
                  android:textSize="15pt"
                  android:textStyle="bold" />
      
      </LinearLayout>
      
      
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="75dp"
              android:orientation="horizontal" >
      
      
          <Button
                  android:id="@+id/btnClear"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="5"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="Clear" />
      
          <Button
                  android:id="@+id/btnBack"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight=".51"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="BS" />
      
      </LinearLayout>
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="75dp"
              android:orientation="horizontal" >
      
      
          <Button
                  android:id="@+id/btnSeven"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="7" />
      
      
          <Button
                  android:id="@+id/btnEight"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="8" />
      
      
          <Button
                  android:id="@+id/btnNine"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="9" />
      
      
          <Button
                  android:id="@+id/btnDivide"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1.15"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="/" />
      
      </LinearLayout>
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="75dp"
              android:orientation="horizontal" >
      
      
          <Button
                  android:id="@+id/btnFour"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textSize="40sp"
                  android:textStyle="bold"
                  android:text="4" />
      
      
          <Button
                  android:id="@+id/btnFive"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="5" />
      
      
          <Button
                  android:id="@+id/btnSix"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="6" />
      
      
          <Button
                  android:id="@+id/btnMultiply"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight=".98"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="x" />
      
      </LinearLayout>
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="75dp"
              android:orientation="horizontal" >
      
      
          <Button
                  android:id="@+id/btnOne"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="1" />
      
      
          <Button
                  android:id="@+id/btnTwo"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="2" />
      
      
          <Button
                  android:id="@+id/btnThree"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="3" />
      
      
          <Button
                  android:id="@+id/btnSubtract"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1.27"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="-" />
      
      </LinearLayout>
      <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="75dp"
              android:orientation="horizontal" >
      
      
          <Button
                  android:id="@+id/btnDecimal"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight="1.22"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="." />
      
      
          <Button
                  android:id="@+id/btnZero"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight=".98"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="0" />
      
      
          <Button
                  android:id="@+id/btnEquals"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight=".95"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="=" />
      
      
          <Button
                  android:id="@+id/btnAdd"
                  android:layout_width="wrap_content"
                  android:layout_height="75dp"
                  android:layout_weight=".93"
                  android:textStyle="bold"
                  android:textSize="40sp"
                  android:text="+" />
      
      </LinearLayout>
      

      【讨论】:

      • 几乎接近您的要求,您需要进行一些小修改
      • 好的,现在可以了!你能解释一下是什么问题吗?
      • 你使用了RelativeLayout,视图排列不正确,你可以使用ConstraintLayout或者FrameLayout来做同样的事情,你贴的代码我修改了两行,请检查
      • 好的,谢谢!是否可以在不接触代码且仅使用编辑器的情况下正确执行此操作?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多