Android: Как вызвать функцию по нажатию невидимой кнопки? - PullRequest
2 голосов
/ 18 января 2020

У меня есть изображение на моем экране, и я хочу, чтобы пользователь коснулся определенной c области изображения. Я поместил кнопку invisible поверх области, которую я хочу, чтобы пользователь щелкнул, и установил onClickListener для нее.

Из того, что я прочитал, кнопки INVISIBLE по-прежнему занимают место, в котором они находятся, в отличие от кнопок GONE.

Однако метод onClick не вызывается, если я щелкаю область , Есть ли факт, которого мне не хватает, или альтернативный способ добиться этого?

public class InteractiveFragment extends Fragment implements View.OnClickListener, OnClickableAreaClickedListener {

    private Button btnEye;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_interactive, container, false);
        btnEye = view.findViewById(R.id.btnEye);
        btnEye.setOnClickListener(this);
        btnEye.setVisibility(View.INVISIBLE);
    }

    @Override
    public void onClick(View v) {
        Toast.makeText(getContext(), "Correct", Toast.LENGTH_SHORT).show();
        System.out.println("method invoked");
    }
]

Ответы [ 2 ]

2 голосов
/ 18 января 2020

вы должны знать механизм отправки событий android. мы можем видеть это в исходном коде метода ViewGrouop * 1002. не может получить событие , родительский объект не отправляет ему событие.

, поэтому, если вы хотите ответить на событие щелчка, вы должны установить его VISIBLE, установить фон кнопки transparent.

btn.setVisibility(View.VISIBLE);
btn.setbackgroundcolor(Color.Transparent);

1 голос
/ 18 января 2020

Установите прозрачный фон и добавьте конечный размер к кнопке. Courtesy @Sam

Использовал следующий xml конфиг для кнопки

<Button
android:id="@+id/btnEye"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@android:color/transparent"
tools:visibility="visible" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...