0

如图所示,我有一个带有多个 ImageView 的 FrameLayout。在此处输入图像描述

我已经注册了所有这些 Imageviews 的听众。我已经使用 android:layout_gravity、android:paddingLeft 和 android:paddingRight 定位了 ImageViews,因此images are overlapping.

我的活动课程如下:

@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);
}

@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;

    }
}

框架布局是

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

所以当我点击棕色的 ImageView 时,它调用的是绿色的。我想知道如何为这些元素中的每一个注册侦听器,并在单击相应的小部件时调用这些特定的侦听器。

提前致谢。

4

2 回答 2

0

以前没有遇到过这种情况,但听起来你遇到了(因为没有更好的术语)未定义的行为。是否使用RelativeLayout选项?如果不是,那么调整尺寸以防止重叠?除此以外 - 尝试分配单独的匿名侦听器而不是一个检查小部件 ID 的侦听器。

请记住,在每一步中,在调试器/跟踪文件中爬行,以验证您认为正在发生的事情是否真的发生了。

于 2012-12-19T04:09:19.793 回答
0

问题是因为我使用android:paddingLeft="200dp"的是android:layout_marginLeft="100dp". 由于填充,图像重叠。现在它工作正常。

于 2012-12-19T20:15:45.323 回答