我正在尝试根据不同的标准设计活动布局。我在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"
/>
答案 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);