问题
So currently I'm putting an Easter egg inside my app and I want the Button
to be invisible, but when clicked(Rick roll). So far I can make it work when I say:
Button.setVisibility(view.VISIBLE);
Button.setBackgroundColor(Color.TRANSPARENT);
and then my onClickListener
. The only problem with this is that I have to have text on the Button
for it to be clickable. When I take the text out and make it completely invisible then the onClickListener
is never called for some reason?
Here is my 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();
}
});
回答1:
In your layout, make your button have a specific width, like android:layout_width="40dp"
.
If your width is set to wrap_content
with a transparent background and no text, Android will measure that view as having a width of 0dp. You'll never be able to click on that.
回答2:
try making the text in the button " "...
myButton.setText(" ");
回答3:
Simple answer is set alpha to 0 like this.
<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" />
It will be invisible and onclick will work.
回答4:
You can create any view, such as LinearLayout, as clickable. Make a LinearLayout with the same dimensions as the button and set it's onClick listener to whatever handles the event. Since it inherently isn't visible, it should hold the same effect.
回答5:
Make sure that your button's width and height are not set to wrap_content
because that would cause the button to be extremely small if the text is " ". If that doesn't work, you could also try replacing onClick() with onTouch():
button1.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
return false;
}
});
回答6:
Don't use a button and override your Activity's dispatchTouchEvent and handle it that way.
回答7:
You can add an OnClickListener
to any View
, so try creating an ImageView
with a transparent image and attach your listener to that.
回答8:
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);
to this code button is invisible but it worked ;))
回答9:
You can also disable the button (It will not be clickable).
In java code:
btn.setClickable(false);
In .xml layout:
android:clickable="false"
回答10:
This works properly for me:
btn.setClickable(false)
onGONE
visibility.btn.setClickable(true)
onVISIBLE
visibility.
来源:https://stackoverflow.com/questions/6851644/setting-android-button-invisible-but-still-having-an-onclick-listener-attached