【问题标题】:Android - One button turns into twoAndroid - 一个按钮变成两个
【发布时间】:2018-03-25 01:17:36
【问题描述】:

如何创建三个按钮,以便只显示第一个按钮,一旦单击它就会被两个并排的按钮代替?这些按钮应该居中。

这是我目前所拥有的:

<Button
            android:id="@+id/enter_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:text="@string/enter_button"
            android:textColor="#FFFFFF" />


    </LinearLayout>

    <LinearLayout
        android:id="@+id/buttons_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal"
        android:padding="30dp" >

        <Button
            android:id="@+id/clear_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="@string/clear_button"
            android:textColor="#FFFFFF" />

        <Button
            android:id="@+id/reserve_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:text="@string/reserve_button"
            android:textColor="#FFFFFF" />

    </LinearLayout>

但这会导致两个并排的按钮出现在第一个下方(而不是直接在它上方)。我已经知道如何使用 setVisibility 使回车按钮消失。

【问题讨论】:

  • setVisibility() 方法会有很大帮助

标签: android button android-activity


【解决方案1】:

这很简单。 父元素可能是线性布局。将其更改为 framelayout 或添加一个,如果它们位于根元素下并且它应该可以工作。

祝你好运。

【讨论】:

    【解决方案2】:

    将所有 3 个按钮放在一个水平线性布局中,如下所示:

    <LinearLayout
        android:id="@+id/buttons_layout"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="30dp"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="0dp">
    
        <Button
            android:id="@+id/enter_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:text="Enter"
            android:textColor="#FFFFFF" />
    
        <Button
            android:id="@+id/clear_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="@string/clear_button"
            android:textColor="#FFFFFF" 
            android:visibility="gone"/>
    
        <Button
            android:id="@+id/reserve_button"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:text="@string/reserve_button"
            android:textColor="#FFFFFF"
            android:visibility="gone"/>
    
    </LinearLayout>
    

    最后两个按钮的可见性应该是“Gone”,在“enter button”点击时,将它们的可见性设置为“Visible”,“enter”应该设置为“Gone”。

    为了使按钮居中,问题在于您使用的是布局重力。相反,您应该使用重力使孩子居中(参见上面的代码)。

    注意:不要使用 setVisibility(Invisible),使用 setVisibility(Gone)

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 2013-08-28
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多