2012-05-13 7 views
1

私は、アプリケーションで定義された静的マップ(ImageView)のマップピンとしてImageButtonビュー(透明な背景)のセットをプログラムで作成しました。マップ上の特定の場所には、互いに非常に近いいくつかのImageButtonがあります。私は、このような状況では、ボタン1をクリックしていても、アプリケーションはボタン2がクリックされていると考えて、ボタン2に関連するアクティビティを実行することに気づいた。これらのボタンの透明度をオフにすると、関連するソースイメージよりもはるかに大きく、したがってこれらのボタンのいくつかは重なっています。imagebuttonのサイズをソースイメージとまったく同じにするにはどうすればいいですか?

どのようにイメージのサイズがソースイメージと同じサイズになるようにイメージボタンを定義しますか?

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

ありがとう:ここ

はのonCreate下に関連するコードのスナップショットは、()です。

答えて

2

これは私のために働いてください。

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); 
+0

ありがとうございます。これは動作します!ところで、あなたは単純なズームを行うためにダブルタップアクションを実装する方法に関する提案はありますか?私は質問を投稿しましたが、まだ回答はありません... [ここに質問する](http://stackoverflow.com/questions/10555496/how-to-implement-simple-zoom-for-static-map-with-pin -buttons-imagebuttons) – Kenny

+0

私の答えがあなたを助けてくれることを望みます、それは完璧ではありません、ごめんなさい – Phil

1

私は単純にImageViewを使用します。これはデフォルトでは画像内のサイズとまったく同じです。または、ImageButtonが行うことができるものがあり、ImageViewできないものがありますか?

+0

ボタンには、新しいアクティビティを開始するためのonClick()アクションがあります。上記の解決策を参照してください。とにかくありがとう。 – Kenny

+0

ImageViewにもsetOnClickListenerがありますが、ok –

関連する問題