【问题标题】:If possible, how do I re-create following layout in android?如果可能,如何在 android 中重新创建以下布局?
【发布时间】:2014-08-31 18:47:49
【问题描述】:

是否可以重新创建如图所示的布局,如果可以,我将如何处理?我已经为按钮定制了可绘制对象,但无法对齐。我尝试过相对布局,但它部分工作,直到我不得不重新排列按钮以获得所需的叠加效果 sigh

编辑:AbsolteLayout 可以完美地解决这个问题,但它已被弃用。

编辑 2:我已按正确顺序对按钮进行排序以获得所需的叠加层,但最大的按钮(开始)是最后一项,并且所有其他按钮都相对于所述开始按钮定位。抛出明显的“没有找到匹配的资源...”错误。

<?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">
  <Button
    android:id="@+id/widButtonOff"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/ignition_button_off"
    android:textSize="@dimen/ignition_button_text_size"
    android:background="@drawable/ignition_button"
    android:layout_alignLeft="@id/widButtonStr"
    android:layout_alignStart="@id/widButtonStr"
    android:layout_alignTop="@id/widButtonStr"
    android:layout_marginLeft="-48dp"
    android:layout_marginStart="-48dp"
    android:layout_marginTop="-12dp"/>

  <Button
    android:id="@+id/widButtonAcc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/ignition_button_text_size"
    android:text="@string/ignition_button_acc"
    android:background="@drawable/ignition_button"
    android:layout_alignLeft="@id/widButtonStr"
    android:layout_alignStart="@id/widButtonStr"
    android:layout_alignTop="@id/widButtonStr"
    android:layout_marginStart="-58dp"
    android:layout_marginLeft="-58dp"
    android:layout_marginTop="36dp"/>

  <Button
    android:id="@+id/widButtonIgn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/ignition_button_text_size"
    android:text="@string/ignition_button_ign"
    android:background="@drawable/ignition_button"
    android:layout_alignLeft="@id/widButtonStr"
    android:layout_alignStart="@id/widButtonStr"
    android:layout_alignTop="@id/widButtonStr"
    android:layout_marginStart="-36dp"
    android:layout_marginLeft="-36dp"
    android:layout_marginTop="82dp"/>

  <Button
    android:id="@+id/widButtonLock"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/ignition_button_text_size"
    android:text="@string/ignition_button_lock"
    android:background="@drawable/ignition_button"
    android:layout_alignLeft="@id/widButtonStr"
    android:layout_alignStart="@id/widButtonStr"
    android:layout_alignTop="@id/widButtonStr"
    android:layout_marginStart="110dp"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="8dp"/>

  <Button
    android:id="@+id/widButtonAbort"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/ignition_button_text_size"
    android:text="@string/ignition_button_abort"
    android:background="@drawable/ignition_button"
    android:layout_alignLeft="@id/widButtonStr"
    android:layout_alignStart="@id/widButtonStr"
    android:layout_alignTop="@id/widButtonStr"
    android:layout_marginStart="108dp"
    android:layout_marginLeft="108dp"
    android:layout_marginTop="64dp"/>

  <Button
    android:id="@+id/widButtonStr"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/start_button_text_size"
    android:text="@string/ignition_button_start"
    android:background="@drawable/start_button"
    android:layout_centerInParent="true"/>
</RelativeLayout>

【问题讨论】:

    标签: android android-layout android-widget


    【解决方案1】:

    宾果游戏!

    在所需的中心位置添加了一个小虚拟按钮,然后将所有按钮相对于虚拟按钮对齐。最后,大按钮放置在虚拟按钮上。

    <?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">
    
      <Button
        android:id="@+id/dummyWidgetCenterButton"
        android:layout_width="1dp"
        android:layout_height="1dp"
        android:layout_centerInParent="true"/>
    
      <Button
        android:id="@+id/widButtonOff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dummyWidgetCenterButton"
        android:layout_alignStart="@id/dummyWidgetCenterButton"
        android:layout_alignTop="@id/dummyWidgetCenterButton"
        android:layout_marginLeft="-102dp"
        android:layout_marginStart="-102dp"
        android:layout_marginTop="-80dp"
        android:background="@drawable/ignition_button"
        android:text="@string/ignition_button_off"
        android:textSize="@dimen/ignition_button_text_size"/>
    
      <Button
        android:id="@+id/widButtonAcc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dummyWidgetCenterButton"
        android:layout_alignStart="@id/dummyWidgetCenterButton"
        android:layout_alignTop="@id/dummyWidgetCenterButton"
        android:layout_marginLeft="-122dp"
        android:layout_marginStart="-122dp"
        android:layout_marginTop="-36dp"
        android:background="@drawable/ignition_button"
        android:text="@string/ignition_button_acc"
        android:textSize="@dimen/ignition_button_text_size"/>
    
      <Button
        android:id="@+id/widButtonIgn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dummyWidgetCenterButton"
        android:layout_alignStart="@id/dummyWidgetCenterButton"
        android:layout_alignTop="@id/dummyWidgetCenterButton"
        android:layout_marginLeft="-108dp"
        android:layout_marginStart="-108dp"
        android:layout_marginTop="12dp"
        android:background="@drawable/ignition_button"
        android:text="@string/ignition_button_ign"
        android:textSize="@dimen/ignition_button_text_size"/>
    
      <Button
        android:id="@+id/widButtonLock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dummyWidgetCenterButton"
        android:layout_alignStart="@id/dummyWidgetCenterButton"
        android:layout_alignTop="@id/dummyWidgetCenterButton"
        android:layout_marginLeft="48dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="-54dp"
        android:background="@drawable/ignition_button"
        android:text="@string/ignition_button_lock"
        android:textSize="@dimen/ignition_button_text_size"/>
    
      <Button
        android:id="@+id/widButtonAbort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dummyWidgetCenterButton"
        android:layout_alignStart="@id/dummyWidgetCenterButton"
        android:layout_alignTop="@id/dummyWidgetCenterButton"
        android:layout_marginLeft="48dp"
        android:layout_marginStart="48dp"
        android:layout_marginTop="0dp"
        android:background="@drawable/ignition_button"
        android:text="@string/ignition_button_abort"
        android:textSize="@dimen/ignition_button_text_size"/>
    
      <Button
        android:id="@+id/widButtonStr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/start_button"
        android:text="@string/ignition_button_start"
        android:textSize="@dimen/start_button_text_size"/>
    </RelativeLayout>
    

    【讨论】:

    • 您还可以将按钮的宽度和高度设置为 0(以减少计算量并提高准确性),并将其可见性设置为不可见,以便跳过 onDraw 调用。在stackoverflow.com/questions/4961355/… 的 cmets 中找到了这一切,我认为这与您检查的页面相同
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2011-08-18
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    相关资源
    最近更新 更多