“ImageView”的Onclick不会在android中产生任何动作

时间:2013-03-22 11:19:36

标签: android layout widget onclick imageview

我的活动中有2个布局,如果从第一个布局点击ImageView“show”,第二个布局应该显示,但是这里没有发生,所以给了编码纠正但是无法解决这个问题 这是我的代码

public class About extends Activity {
 LinearLayout line1, line2;
 ImageView show;
 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);
   line1=(LinearLayout) findViewById(R.id.ll1);
         line2=(LinearLayout)findViewById(R.id.ll2);

         show=(ImageView)findViewById(R.id.ss);

       show.setOnClickListener(new View.OnClickListener() {

       public void onClick(View v) {
           show.setVisibility(View.VISIBLE);
         // TODO Auto-generated method stub
       line1.setVisibility(View.VISIBLE);
       if (line2.getVisibility() == View.INVISIBLE || line2.getVisibility() == View.GONE) {
           line2.setVisibility(View.VISIBLE); } 
       else { 
           line2.setVisibility(View.INVISIBLE); 
       } 
         }
     });

Xml布局

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
       android:background="@color/black" >

<LinearLayout
    android:id="@+id/ll1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/black" 
   android:layout_alignParentTop="true"
    android:layout_alignParentRight="true">

      <ImageView
    android:id="@+id/ss"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/menu"
    android:clickable="true" />
</LinearLayout>

<LinearLayout
    android:id="@+id/ll2"
    android:layout_width="199dp"
    android:layout_height="wrap_content"
    android:background="@color/black" 
    android:layout_toRightOf="@+id/ll1"
    android:visibility="gone"
    >


  <ImageView
    android:id="@+id/about"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_above="@+id/textView1"
    android:layout_toLeftOf="@+id/jobs"
    android:src="@drawable/about" />

    <ImageView
    android:id="@+id/jobs"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/jobs" />

<ImageView
    android:id="@+id/log"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/log" />

<ImageView
    android:id="@+id/home"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/home" />

</LinearLayout>
 </RelativeLayout>

2 个答案:

答案 0 :(得分:0)

对于xml中的图像视图's',设置属性android:clickable =“true”。

或者更好,否则请在xml中使用ImageButton代替ImageView

编辑 -

更改此

show=(ImageView)findViewById(R.id.ss);

show=(ImageView)findViewById(R.id.show);

答案 1 :(得分:0)

您错误地定义了ImageView的ID,这就是您无法获得ImageView的onClick事件的原因。

ImageView的ID更改为除R.id.show以外的R.id.ss,如下所示:

更改此

      show=(ImageView)findViewById(R.id.ss);

      show=(ImageView)findViewById(R.id.show);

<强>编辑:

尝试在onClick侦听器中显示和隐藏您的布局。

   if (line2.getVisibility() == View.INVISIBLE || line2.getVisibility() == View.GONE) {
       line2.setVisibility(View.VISIBLE); 
       line1.setVisibility(View.INVISIBLE);
    } 
   else { 
       line2.setVisibility(View.INVISIBLE); 
       line1.setVisibility(View.VISIBLE);
   }