隐藏两个按钮并在xml上显示不同的按钮

时间:2016-01-18 04:45:00

标签: android

我正在尝试根据不同的标准设计活动布局。我在xml上创建了布局,默认情况下它会在活动中显示两个按钮(询问,购买)。

但是,在某些情况下,我不想显示这两个按钮,只显示一个按钮,下面没有任何按钮,完全不同的按钮和不同的动作。我怎么能实现呢?

换句话说,我想让我的新按钮保持在买入和询问按钮的中间位置。大小相同。我该如何实现?而不是两个按钮,并排(购买和询问),现在中心只有一个按钮(删除)。

          <Button
            android:id="@+id/btnAsk"
            android:textSize="16sp"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="ask"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"/>
        <Button
            android:id="@+id/btnBuy"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:textSize="16sp"
            android:layout_height="wrap_content"
            android:text="buy"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"
            />

6 个答案:

答案 0 :(得分:1)

如果要隐藏按钮,请在Button对象中使用setVisibility(View.GONE)

Button btnAsk = (Button)findViewById(R.id.btnAsk);
Button btnDel = (Button)findViewById(R.id.btnDel);
Button btnBuy = (Button)findViewById(R.id.btnBuy);

/* if you want to show only Delete button.. */
btnAsk.setVisibility(View.INVISIBLE);
btnDel.setVisibility(View.VISIBLE);
btnBuy.setVisibility(View.INVISIBLE);

/* if you want to show Ask and Buy buttons.. */
btnAsk.setVisibility(View.VISIBLE);
btnDel.setVisibility(View.INVISIBLE);
btnBuy.setVisibility(View.VISIBLE);

View.INVISIBLE属性将使您的按钮不显示,但保持其位置。

View.GONE属性会完全隐藏您的按钮。

照顾它。

如果要设置三个按钮,请编辑xml代码,如下所示:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btnAsk"
        android:textSize="16sp"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="ask"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="5dp"
        android:textStyle="bold"
        android:background="@drawable/button_style"
        android:textColor="@color/white"/>
    <Button
        android:id="@+id/btnDel"
        android:textSize="16sp"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="Delete"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="5dp"
        android:textStyle="bold"
        android:background="@drawable/button_style"
        android:textColor="@color/white"/>
    <Button
        android:id="@+id/btnBuy"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:textSize="16sp"
        android:layout_height="wrap_content"
        android:text="buy"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="5dp"
        android:textStyle="bold"
        android:background="@drawable/button_style"
        android:textColor="@color/white"
    />
</LinearLayout>

答案 1 :(得分:1)

隐藏按钮,请使用dRuntime: FATAL EXCEPTION: main Process: com.sounds.apps.sounds, PID: 3660 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference at com.sounds.apps.sound.MainActivity$1.onClick(MainActivity.java:30) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) ONE

INVISIBLE

可见按钮

Button btnName = (Button)findViewById(R.id.btnName);

btnName.setVisibility(View.GONE);

在xml中使用btnName.setVisibility(View.VISIBLE);

android:gravity="center"

答案 2 :(得分:1)

<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:oriantation="horizontal" >
<Button
            android:id="@+id/btnAsk"
            android:textSize="16sp"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="ask"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"/>

     <Button
            android:id="@+id/btnDelete"
            android:layout_width="match_parent"
            android:gravity="center"
            android:textSize="16sp"
            android:layout_height="wrap_content"
            android:text="delete"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"
            android:visibility="gone"
            />

        <Button
            android:id="@+id/btnBuy"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:textSize="16sp"
            android:layout_height="wrap_content"
            android:text="buy"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"
            />

</LinearLayout>

on some condition

delete.setVisibility(View.Visible);
  buy.setVisibility(View.Gone);
  action.setVisibility(View.Gone);

答案 3 :(得分:1)

在XML本身中使用你所有的按钮。但是在你的java文件中它是可见的/不可见的,即如果你不想显示将它作为一个INVISIBLE,那就是Activity.In onCreate

  Button buyBut=(Button)findViewById(R.id.butBuy);
  buyBut.setVisibility(View.GONE);

并将其视为可见,您需要使用以下内容显示它。

 buyBut.setVisibility(View.VISIBLE);

答案 4 :(得分:1)

创建布局(比如userActionLayout)并向其添加按钮,当您想使用setVisibility(View.Gone)隐藏这些按钮时隐藏此布局

在此布局外添加另一个按钮(userActionLayout)并以不同方式定义它。当您隐藏其他布局时,请在代码中看到此按钮。

例如:

   <LinearLayout
           android:id="@+id/userActionLayout"
           android:height="wrap_content"
           android:width="fill_parent"
           android:orientation="vertical">
    <Button
            android:id="@+id/btnAsk"
            android:textSize="16sp"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="ask"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"/>
        <Button
            android:id="@+id/btnBuy"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:textSize="16sp"
            android:layout_height="wrap_content"
            android:text="buy"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="5dp"
            android:textStyle="bold"
            android:background="@drawable/button_style"
            android:textColor="@color/white"
            />
     <LinearLayout/>

     <Button
            android:id="@+id/btnOther"
            android:height="wrap_content"
            android:width="fill_parent"
            android:visibility="gone"
            />

答案 5 :(得分:0)

尝试以下代码 -

Button buttonname =(Button)findViewById(R.id.butBuy);

  

buttonname.setVisibility(View.INVISIBLE);

或 -

  

buttonname.setVisibility(View.GONE);

再次使用 -

显示
  

buttonname.setVisibility(View.VISIBLE);