设置android按钮不可见,但仍然附加onClick Listener

时间:2011-07-27 21:47:00

标签: android android-button invisible

所以目前我正在我的应用程序中放入一个复活节彩蛋,我希望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();
    }
});

10 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:5)

尝试在按钮“”...

中制作文字
myButton.setText("    ");

答案 2 :(得分:4)

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

答案 3 :(得分:4)

简单回答就像这样将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将起作用。

答案 4 :(得分:3)

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

button1.setOnTouchListener(new OnTouchListener()
{
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        // TODO Auto-generated method stub
        return false;
    }
});

答案 5 :(得分:1)

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

答案 6 :(得分:1)

您可以向OnClickListener添加View,因此请尝试使用透明图片创建ImageView并将您的监听器附加到该{。}}。

答案 7 :(得分: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);

这个代码按钮是不可见的,但它起作用;))

答案 8 :(得分:0)

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

在java代码中:

btn.setClickable(false);

在.xml布局中:

android:clickable="false"

答案 9 :(得分:-1)

这适合我:

    {li> btn.setClickable(false) GONE知名度。 {li> btn.setClickable(true) VISIBLE知名度。