I have a FrameLayout with multiple ImageViews as shown in the image.
I have registered listeners to all these Imageviews.
I have positioned the ImageViews using android:layout_gravity, android:paddingLeft and android:paddingRight due to which the images are overlapping.
My Activity class is as follows:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ivbglogin = (ImageView) findViewById(R.id.bglogin);
ivlogin = (ImageView) findViewById(R.id.login);
tvlogin = (TextView) findViewById(R.id.tvlogin);
ivbgsignup = (ImageView) findViewById(R.id.bgsignup);
ivsignup = (ImageView) findViewById(R.id.signup);
tvsignup = (TextView) findViewById(R.id.tvsignup);
ivbglogin.setOnClickListener(this);
ivlogin.setOnClickListener(this);
tvlogin.setOnClickListener(this);
ivbgsignup.setOnClickListener(this);
ivsignup.setOnClickListener(this);
tvsignup.setOnClickListener(this);
}
and
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bglogin:
Toast.makeText(AstralPadActivity.this, "bglogin", Toast.LENGTH_SHORT).show();
break;
case R.id.login:
Toast.makeText(AstralPadActivity.this, "login", Toast.LENGTH_SHORT).show();
break;
case R.id.tvlogin:
Toast.makeText(AstralPadActivity.this, "tvlogin", Toast.LENGTH_SHORT).show();
openLoginDialog();
break;
case R.id.bgsignup:
Toast.makeText(AstralPadActivity.this, "bgsignup", Toast.LENGTH_SHORT).show();
break;
case R.id.signup:
Toast.makeText(AstralPadActivity.this, "signup", Toast.LENGTH_SHORT).show();
break;
case R.id.tvsignup:
Toast.makeText(AstralPadActivity.this, "tvsignup", Toast.LENGTH_SHORT).show();
break;
}
}
The Framwlayout is
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="40"
android:background="@drawable/start_bottombg" >
<ImageView
android:id="@+id/bglogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingRight="194dp"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:src="@drawable/start_loginbg" />
<ImageView
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingBottom="15dp"
android:paddingRight="200dp"
android:paddingTop="15dp"
android:src="@drawable/icon_login" />
<TextView
android:id="@+id/tvlogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingRight="120dp"
android:text="Log In"
android:textSize="15dp"
android:textStyle="bold" />
<ImageView
android:id="@+id/bgor"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center"
android:src="@drawable/start_or" />
<ImageView
android:id="@+id/bgsignup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="190dp"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:src="@drawable/start_signupbg" />
<ImageView
android:id="@+id/signup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingBottom="15dp"
android:paddingLeft="100dp"
android:paddingTop="15dp"
android:src="@drawable/icon_signup" />
<TextView
android:id="@+id/tvsignup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="200dp"
android:text="Sign Up"
android:textSize="15dp"
android:textStyle="bold" />
</FrameLayout>
So when I click on the brown ImageView, it is calling the green one.
I want to know how to register listeners to each one of these elements and invoke those specific listeners on click of respective widgets please.
Thanks in advance.
The issue was because I was using
android:paddingLeft="200dp"instead ofandroid:layout_marginLeft="100dp". Because of the padding the images were overlapping. Now it works fine.