0

これは私の 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 メソッドが起動されないことです...いくつかのクリックをクリックした後に起動するか、テキストビューの右下をクリックするため、奇妙です...

何か案は ??

4

1 に答える 1

0

私の提案は、ScrollViewRelativeLayoutすべてのタッチ イベントを処理し、 にタッチ イベントを処理させないことRelativeLayoutです。

この場合、 を延長しScrollViewonTouchEvent返却する必要があります。false

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

そして同じようにonInterceptTouchEvent

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

試してみて、何が得られたか教えてください =)

于 2013-10-18T15:47:20.803 に答える