ImageButtonの画像の大きさ
ImageButtonに大きい画像を設定する場合は、通常であればはみ出るようになってしまいます。
そのため、フィットさせるには「setAdjustViewBounds」を「true」にしてあげます。
package test.example.com.test48;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private int mNo1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
layout.setBackgroundColor(Color.WHITE);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
mNo1 = View.generateViewId();
//画像の大きさがボタンの大きさよりも大きなケースでも
//ボタン内に大きさをあわせるテスト
//配置を設定
x=100;
y=50;
width=200;
height=200;
RelativeLayout.LayoutParams obj1 = null;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
ImageButton imageButton=new ImageButton(this);
imageButton.setId(mNo1);
imageButton.setImageResource(R.mipmap.icon_512);
imageButton.setTag(x);
imageButton.setScaleType(ImageView.ScaleType.FIT_XY);
imageButton.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageButton.setScaleType(ImageView.ScaleType.CENTER);
imageButton.setBackgroundColor(0);//背景を透過色にします
//ここで画像が大きくてもボタンの大きさにフィットさせます
imageButton.setAdjustViewBounds(true);
imageButton.setOnClickListener(this);
layout.addView(imageButton, obj1);
imageButton=null;//解放処理
}
//ボタンがクリックされたら実行されます。
public void onClick(View view)
{
if(view.getId()==mNo1)
{
//出力結果
//テスト: ボタンがクリックされました。
Log.d("テスト","ボタンがクリックされました。");
}
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
setIdにView.generateViewId()から取得したIDを設定し、
setOnClickListenerを設定することで
クリックイベントを使用することができるようになります。
あとは implements View.OnClickListenerなど
イベント実装に必要な宣言をしていただき
onClickイベントに画像コントロール(setIdのところ)で指定したID番号と
view.getId()が同じであれば、画像コントロールと同じコントロールを
指定した動作を実装するだけです。
※view.getId()の「view」はonClickの引数をみると「View view」となっている「view」を指します。
|
|