1

アプリで定義された静的マップ (ImageView) 上のマップ ピンとして、一連の ImageButton ビュー (透明な背景) をプログラムで作成しました。マップ上の特定の場所では、互いに非常に接近しているいくつかの ImageButtons があります。このような状況では、ボタン 1 をクリックしていても、アプリはボタン 2 がクリックされていると見なし、ボタン 2 に関連付けられたアクティビティの実行に進むことに気付きました。これらのボタンの透明度をオフにすると、ボタンが実際に関連するソース画像よりもはるかに大きいため、これらのボタンの一部が重なっています。

ソース画像と同じサイズになるように画像ボタンを定義するにはどうすればよいですか?

onCreate() の下の関連コードのスナップショットを次に示します。

    ImageButton btnMapLoc = new ImageButton(ResultMapActivity.this);
    RelativeLayout.LayoutParams vp = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    vp.setMargins(x,y,0,0);  // [left, top, right, bottom] - in pixels
    btnMapLoc.setLayoutParams(vp);
    //btnMapLoc.setBackgroundColor(Color.TRANSPARENT);
    btnMapLoc.requestLayout();

    String imgNameNormal = "map_loc_" + mapLocation + "_normal"; //e.g. map_loc_10_normal
    int idNormal = getResources().getIdentifier(imgNameNormal,"drawable",getPackageName());
    String imgNameClick = "map_loc_" + mapLocation + "_click"; //e.g. map_loc_10_click
    int idClick = getResources().getIdentifier(imgNameClick,"drawable",getPackageName());
    btnMapLoc.setImageResource(idNormal);
    rl.addView(btnMapLoc, vp);

    // Change image as the state of the button changed (normal vs. clicked)
    StateListDrawable states = new StateListDrawable();
    states.addState(new int[] {-android.R.attr.state_pressed},getResources().getDrawable(idNormal)); // Note the "-"
    states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(idClick));
    btnMapLoc.setImageDrawable(states);

ありがとう。

4

2 に答える 2

3

これを試してください、それは私のために働きます。

Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.testbild);            

ImageButton btnMapLoc = (ImageButton) findViewById(R.id.imageButton1);        
LayoutParams lp = new LayoutParams(image.getWidth(), image.getHeight());
btnMapLoc.setLayoutParams(lp);

btnMapLoc.setImageBitmap(image);
于 2012-05-13T11:27:47.900 に答える
1

ImageView代わりに、デフォルトで画像とまったく同じサイズを使用します。それとも、ImageButtonできることとImageViewできないことで必要なことはありますか?

于 2012-05-13T10:26:12.797 に答える