0

我有一个在所有活动中使用的通用布局。在标题布局中,我包含了一个 imageview,并且在这个 imageview 的 xml 布局中指定了一个 onclick 方法。

在我的一项活动中,此 imageview 的 onclick 未在 java 代码中触发。以下是我所指的活动的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:id="@+id/bottom_layout_main"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:padding="5dp" >

    <RelativeLayout
        android:id="@+id/btn_layout_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/exit_createprofile"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/custom_button"
            android:onClick="onCreateExitClick"
            android:text="Exit"
            android:textSize="14dp" />

        <Button
            android:id="@+id/save"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@id/exit_createprofile"
            android:background="@drawable/custom_button"
            android:onClick="onCreateSaveClick"
            android:text="Save"
            android:textSize="14dp" />
    </RelativeLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/top_layout"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_weight="1"
    android:background="@color/light_grey"
    android:gravity="top"
    android:orientation="horizontal" >

    <include
        android:id="@+id/includeTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/titlebar_layout" />
</LinearLayout>

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="40dp" >

    <br.com.dina.ui.widget.UITableView
        android:id="@+id/profileList_create"
        style="@style/UITableView"
        android:layout_height="wrap_content" />
</ScrollView>

并且包含中指定的布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/list_item_top"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/background_grey"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imgBack"
    android:layout_width="28dp"
    android:layout_height="28dp"
    android:onClick="onBackClick"
    android:src="@drawable/arrow_back" />

<TextView
    android:id="@+id/txtTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:textColor="@android:color/black"
    android:textStyle="bold" 
    android:textSize="18sp" />



</LinearLayout>

我什至尝试过在活动中使用以下代码,但仍然没有触发 onclick:

backImage = (ImageView)layout.findViewById(R.id.imgBack);
    backImage.setClickable(true); 
    backImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Title back clicked", Toast.LENGTH_SHORT).show();
        }
      });

我不知道为什么这个 onclick 没有被解雇。任何帮助深表感谢。

这是我的屏幕:

在此处输入图像描述

4

3 回答 3

2

添加android:clickable="true"您的ImageView内部 XML 布局。

或者

backImage.setClickable(true); 
于 2013-05-16T09:43:40.423 回答
1

请试试这个

backImage = (ImageView)findViewById(R.id.imgBack);
backImage.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "Title back clicked", Toast.LENGTH_SHORT).show();
    }
  });
于 2013-05-16T09:33:39.563 回答
1

如果您的图像视图在包含的布局中,请尝试此操作

LinearLayout layout=(LinearLayout)findViewById(R.id.includeTitle);

接着

backImage = (ImageView)layout.findViewById(R.id.imgBack);
于 2013-05-16T09:34:19.550 回答