我知道Android Presentations可以有自己的布局,这意味着我可以创建按钮等UI组件。但是,有人知道Presentation是否可以处理触摸事件?

我尝试在Presentation布局上添加按钮并在onClickListener上注册按钮,但它似乎无法正常工作。还有另一种方法吗?

这是我的代码:

在我的演讲班

mHelloToast = (Button) findViewById(R.id.btn_presentation_hello_toast);
    mHelloToast.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast toast = Toast.makeText(getContext(), "hello presentation", Toast.LENGTH_SHORT );
            toast.show();
        }
    });


编辑:凹凸

最佳答案

Doc说:


  演示是一种特殊的对话框,其目的是在辅助显示器上演示内容。 Presentation在创建时与目标Display关联,并根据Display的指标配置其上下文和资源配置。


所以我认为Android Presention可以像Dialog一样处理touche事件。在这里,我将向您展示Dialog如何处理touch事件。

步骤1

创建自定义布局res/layout/dialog_signin.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button
        android:id="@+id/btn_presentation_hello_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>


第2步

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
// Get the view which you want to receive touch event
//// Pass null as the parent view because its going in the dialog layout
View rootView = inflater.inflate(R.layout.dialog_signin, null);
Button bt = (Button)rootView.findViewById(R.id.btn_presentation_hello_toast);
// set click or touch listener
bt.setOnClickListener(....);

// set dialog's contents
builder.setView(rootView);

07-27 16:37