创建android自定义视图

时间:2012-07-27 08:21:18

标签: android events custom-component

我正在尝试创建一个如下所示的自定义视图组件: 一个组件将作为菜单工作 - 它有4个图像视图,其中对onClick事件作出反应。 我和他们分别创建了一个.xml和一个类。比我从.xml“class ='myclass'”设置父节点类。 在我的.xml中,imageview有一个onClick声明,但是当我尝试使用myclass处理它时 - 应用程序崩溃。怎么了?或者我想主要的问题是:为自定义视图设置事件处理程序的正确方法是什么?此视图类定义中的处理程序。我应该写一个类似的视图的.xml                       

补充:那么,我如何从这个自定义视图中触发事件来保存它来处理?

这是我的菜单.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
class="com.example.mtgesturestest.MTMenuViewController"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main_layout" >

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <ImageView
            android:id="@+id/imageChannels"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/channels"
            android:layout_marginBottom="10dp"           />
        <ImageView
            android:id="@+id/imageMessages"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/messages"
            android:layout_marginBottom="10dp" />
        <ImageView
            android:id="@+id/imageTimeline"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/timeline"
            android:onClick="yell"
            android:layout_marginBottom="10dp" />  

</RelativeLayout>
        <ImageView
            android:id="@+id/imageMenu"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:src="@drawable/menu"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="-15dp"
            android:onClick="maximizeMenu"/>

</RelativeLayout>

应用程序说它无法找到onClick处理程序(maximizeMenu),但它在我添加此视图的活动中搜索它而不是com.mtgesturestest.MTMenuViewController类。我希望这个菜单是独立的。它应该处理点击,播放一些动画,然后为父活动触发事件。所以你可以说这里点击这里是为了内部使用我的自定义视图。

1 个答案:

答案 0 :(得分:2)

为什么不尝试从MTMenuViewController类中添加onClick侦听器,如

ImageView menu = (ImageView)this.findViewById(R.id.imageMenu);
menu.setOnClickListener(PUT THE LISTENER HERE);