困っていること
- 端末によってImageButtonのサイズが変わる
- 端末1 SO-04E, Androidバージョン 4.2.2
- 端末2 FTJ125A, Androidバージョン 5.1
コード
java
1 protected LinearLayout setRow(CheckBox cb_param){ 2 //CheckBox変数 3 final CheckBox cb = cb_param; 4 5 //ボタンのLayoutParamsの設定 6 LinearLayout.LayoutParams btn_params = new LinearLayout.LayoutParams(80, 80); 7 btn_params.setMargins(0,0,0,0); 8 9 //アイコンの設定 10 ImageButton edit_btn = new ImageButton(MainActivity.this); 11 edit_btn.setImageResource(R.drawable.ic_edit); 12 if(Build.VERSION.SDK_INT >= 16){ 13 edit_btn.setBackground(null); 14 } else { 15 edit_btn.setBackgroundDrawable(null); 16 } 17 edit_btn.setLayoutParams(btn_params); 18 edit_btn.setScaleType(ImageButton.ScaleType.CENTER_CROP); 19 20 ImageButton delete_btn = new ImageButton(MainActivity.this); 21 delete_btn.setImageResource(R.drawable.ic_delete); 22 if(Build.VERSION.SDK_INT >= 16){ 23 delete_btn.setBackground(null); 24 } else { 25 delete_btn.setBackgroundDrawable(null); 26 } 27 delete_btn.setLayoutParams(btn_params); 28 delete_btn.setScaleType(ImageButton.ScaleType.CENTER_CROP); 29 30 //リスナーの登録 31 edit_btn.setOnClickListener(new View.OnClickListener() { 32 @Override 33 public void onClick(View v) { 34 //UPDATE画面に遷移 35 Intent intent = new Intent(getApplication(), UpdateActivity.class); 36 //intentにデータを渡す 37 intent.putExtra("task_data", cb.getText().toString()); 38 startActivity(intent); 39 } 40 }); 41 delete_btn.setOnClickListener(new View.OnClickListener() { 42 @Override 43 public void onClick(View v) { 44 //データベースを削除 45 deleteDb(cb.getText().toString()); 46 47 //CheckBoxが入っているLayoutを取得 48 LinearLayout ll = (LinearLayout)cb.getParent(); 49 //Layoutが入ってるLayoutを取得 50 LinearLayout ll_p = (LinearLayout)ll.getParent(); 51 //CheckBoxの入っているLayoutのindexを取得 52 int ll_index = ((ViewGroup)ll_p).indexOfChild(ll); 53 //CheckBoxの入っているLayoutを削除 54 ll_p.removeViewAt(ll_index); 55 } 56 }); 57 58 //LinearLayoutの設定 59 LinearLayout layout = new LinearLayout(MainActivity.this);//インスタンスの生成 60 layout.setGravity(Gravity.CENTER_VERTICAL);//Gravityの設定 61 62 //CheckBoxとImageButtonの間をうめるやつ 63 View view = new View(MainActivity.this); 64 LinearLayout.LayoutParams v_lp = new LinearLayout.LayoutParams( 65 ViewGroup.LayoutParams.WRAP_CONTENT, 1, 1f); 66 view.setLayoutParams(v_lp); 67 68 //LinearLayoutに部品を追加 69 layout.addView(cb); 70 layout.addView(view); 71 layout.addView(edit_btn); 72 layout.addView(delete_btn); 73 74 //layoutのLayoutParams 75 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 76 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 77 params.setMargins(0, 3, 0, 0); 78 layout.setLayoutParams(params); 79 80 return layout; 81 }
解決方法(2017/06/27追記)
width, heightをdp指定にする
px→dpの変換方法は下記参照
http://buchi.hatenablog.com/entry/2015/04/21/123008
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 16:49