我有一个共同的布局,我在我的所有活动中使用。在标题布局中,我包含了一个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没有被解雇。非常感谢任何帮助。
这是我的屏幕:
答案 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);