Android RelativeLayout onclicklistener不会被解雇

时间:2013-10-18 13:39:03

标签: android relativelayout onclicklistener

这是我的XML布局 - 它是一个信息窗口。 我希望当用户点击@ + id / fragment_info_relativelayout_content布局时 - 信息窗口将被关闭。

这是我的XML:

<RelativeLayout
    android:id="@+id/fragment_info_relativelayout_content"
    android:layout_width="fill_parent"
    android:layout_height="70dp"
    android:background="@drawable/background_info_window"
    android:clickable="true" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
        android:layout_margin="5dp" >

        <!-- The info textView -->

        <com.coapps.pico.NillanTextView
            android:id="@+id/fragment_info_textview_info"
            style="@style/text_shadow_black"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:gravity="center"
            android:text="Some Text "
            android:textColor="@android:color/white"
            app:isBold="true" />
    </ScrollView>
    <!-- Tap to close -->

    <com.coapps.pico.NillanTextView
        android:id="@+id/fragment_info_textview_tap_to_close"
        style="@style/text_shadow_black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:paddingRight="5dp"
        android:text="@string/button_tap_to_close"
        android:textColor="@android:color/white"
        app:isBold="true" />
</RelativeLayout>

这是我的代码:

public InfoWindow(ViewGroup rootView)
{
    this.container = rootView;
    infoWindowView = LayoutInflater.from(rootView.getContext()).inflate(INFO_WINDOW_LAYOUT_ID, null);
    //find info window's view
    contentLayout = infoWindowView.findViewById(R.id.fragment_info_relativelayout_content);
    contentLayout.setClickable(true);
    contentLayout.setOnClickListener(this);     
}   

@Override
public void onClick(View v) {
          //close the info window
    close();        
}

我的问题是onClick方法在布局上的每次点击都没有被触发... 它很奇怪,因为点击一些点击后点击,或点击文本视图右下角...

任何想法??

1 个答案:

答案 0 :(得分:0)

我的建议是,ScrollView中的RelativeLayout处理所有触摸事件,并且不要让RelativeLayout处理任何触摸事件。

在这种情况下,您应该延长ScrollView并使onTouchEvent返回false

@Override
public boolean onTouchEvent(MotionEvent ev) {
    super.onTouchEvent(ev);
    return false;
}

onInterceptTouchEvent

相同
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    super.onInterceptTouchEvent(ev);
    return false;
}

试试看,告诉我你得到了什么=)