0

画像に示されているように、複数のImageViewを持つFrameLayoutがあります。ここに画像の説明を入力してください

これらすべてのImageviewにリスナーを登録しました。android:layout_gravity、android:paddingLeft、android:paddingRightを使用してImageViewを配置しました。これにより、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;

    }
}

Framwlayoutは

<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をクリックすると、緑色の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 に答える