8

所以目前我在我的应用程序中放了一个复活节彩蛋,我希望它Button是不可见的,但是当点击时(Rick roll)。到目前为止,当我说:

Button.setVisibility(view.VISIBLE);
Button.setBackgroundColor(Color.TRANSPARENT);

然后我的onClickListener. 唯一的问题是我必须有文本Button才能点击它。当我取出文本并使其完全不可见时,onClickListener由于某种原因从未调用过?

这是我的OnClickListener

wonderWhatThisDoes.setOnClickListener(new Button.OnClickListener()
{
    @Override
    public void onClick(View v) {
        mMediaPlayer = MediaPlayer.create(About.this, R.raw.surprise);
        mMediaPlayer.start();
        Context context = getApplicationContext();
        CharSequence text = "Congrats on finding our easter egg! Enjoy... :]";
        Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
        toast.show();
    }
});
4

10 回答 10

15

在您的布局中,使您的按钮具有特定的宽度,例如android:layout_width="40dp".

如果您的宽度设置为wrap_content透明背景且没有文本,Android 会将该视图测量为宽度为 0dp。你永远无法点击它。

于 2011-07-27T22:05:14.250 回答
5

尝试在按钮“”中制作文本...

myButton.setText("    ");
于 2011-07-27T21:50:25.727 回答
5

简单的答案是像这样将 alpha 设置为 0。

 <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:alpha="0"
                android:clickable="true"
                android:onClick="getAllImages"
                android:visibility="visible" />

它将是不可见的,并且 onclick 将起作用。

于 2015-03-04T10:06:09.393 回答
4

您可以将任何视图(例如 LinearLayout)创建为可点击的。制作一个与按钮尺寸相同的 LinearLayout 并将其设置为 onClick 侦听器来处理事件。由于它本质上是不可见的,因此它应该具有相同的效果。

于 2011-07-27T22:02:44.030 回答
3

确保您的按钮的宽度和高度未设置为,wrap_content因为如果文本为“”,这将导致按钮非常小。如果这不起作用,您还可以尝试将 onClick() 替换为 onTouch():

button1.setOnTouchListener(new OnTouchListener()
{
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        // TODO Auto-generated method stub
        return false;
    }
});
于 2011-07-27T22:01:38.130 回答
1

不要使用按钮并覆盖您的 Activity 的 dispatchTouchEvent 并以这种方式处理它。

于 2011-07-27T22:01:10.737 回答
1

您可以将 an 添加OnClickListener到 any View,因此请尝试ImageView使用透明图像创建 an 并将您的侦听器附加到该图像上。

于 2011-07-27T22:03:00.097 回答
1
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
     Button b = (Button) findViewById(R.id.button1);
     final CheckBox cb = (CheckBox) findViewById(R.id.checkBox1);
     b.setBackgroundColor(Color.TRANSPARENT);

     b.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            cb.setChecked(true);

此代码按钮是不可见的,但它有效;))

于 2012-07-16T20:42:24.537 回答
0

您也可以禁用该按钮(它将不可点击)。

在java代码中:

btn.setClickable(false);

在 .xml 布局中:

android:clickable="false"
于 2014-12-10T18:12:20.203 回答
-1

这对我来说很有效:

  • btn.setClickable(false)关于GONE能见度。
  • btn.setClickable(true)关于VISIBLE能见度。
于 2017-04-05T09:23:37.300 回答