android onClick for imageview没有被解雇

时间:2013-05-16 09:27:17

标签: android android-layout

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

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

<?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>

并且include中指定的布局是:

<?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没有被解雇。非常感谢任何帮助。

这是我的屏幕:

enter image description here

3 个答案:

答案 0 :(得分:2)

android:clickable="true"内部XML布局中添加ImageView

OR

backImage.setClickable(true); 

答案 1 :(得分: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();
    }
  });

答案 2 :(得分:1)

如果您的图片视图位于包含的布局中,请尝试此

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

然后

backImage = (ImageView)layout.findViewById(R.id.imgBack);