设置androidbutton不可见,但仍然有一个onClick监听器附加

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

在你的布局中,让你的button有一个特定的宽度,如android:layout_width="40dp"

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

尝试使button中的文本“”…

 myButton.setText(" "); 

您可以将任何视图(如LinearLayout)创build为可点击的视图。 使用与button相同的尺寸制作一个LinearLayout,并将其onClick监听器设置为处理事件的任何事件。 由于它本身是不可见的,它应该保持相同的效果。

确保你的button的宽度和高度没有设置为wrap_content因为如果文本是“”,会导致button非常小。 如果这不起作用,您也可以尝试用onTouch()replaceonClick():

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

简单的答案像这样设置为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将工作。

不要使用button,并重写你的Activity的dispatchTouchEvent,并以这种方式处理。

您可以将OnClickListener添加到任何View ,因此请尝试使用透明图像创buildImageView并将侦听器附加到该View

 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); 

到这个代码button是不可见的,但它的工作;))

您也可以禁用button(它不会被点击)。

在java代码中:

 btn.setClickable(false); 

在.xml布局中:

 android:clickable="false" 

这适用于我:

  • btn.setClickable(false)关于GONE可见性。
  • btn.setClickable(true)关于VISIBLE可见性。