困っていること
LinearLayoutとLinearLayoutの間の余白を詰めたい(図の赤線)
構造としては、全体のLinearLayoutがあり、その中に行ごとのLinearLayoutを動的に追加しています
やってみたこと
- LinearLayout.LayoutParamsのsetMarginsで全て0に指定 → 変化なし
コード
java
1 //showDBの中で、部品を配置するメソッド 2 protected LinearLayout setRow(CheckBox cb_param){ 3 //rowの高さ 4 int row_h = pxToDp(this, 300); 5 //CheckBox変数 6 final CheckBox cb = cb_param; 7 LinearLayout.LayoutParams cb_lp = new LinearLayout.LayoutParams( 8 ViewGroup.LayoutParams.WRAP_CONTENT, row_h); 9 cb.setLayoutParams(cb_lp); 10 11 //ボタンのLayoutParamsの設定 12 LinearLayout.LayoutParams btn_params = new LinearLayout.LayoutParams( 13 row_h, row_h); 14 15 //アイコンの設定 16 ImageButton edit_btn = new ImageButton(MainActivity.this); 17 edit_btn.setImageResource(R.drawable.ic_edit); 18 if(Build.VERSION.SDK_INT >= 16){ 19 edit_btn.setBackground(null); 20 } else { 21 edit_btn.setBackgroundDrawable(null); 22 } 23 edit_btn.setLayoutParams(btn_params); 24 edit_btn.setScaleType(ImageButton.ScaleType.CENTER_CROP); 25 26 ImageButton delete_btn = new ImageButton(MainActivity.this); 27 delete_btn.setImageResource(R.drawable.ic_delete); 28 if(Build.VERSION.SDK_INT >= 16){ 29 delete_btn.setBackground(null); 30 } else { 31 delete_btn.setBackgroundDrawable(null); 32 } 33 delete_btn.setLayoutParams(btn_params); 34 delete_btn.setScaleType(ImageButton.ScaleType.CENTER_CROP); 35 36 //リスナーの登録 37 edit_btn.setOnClickListener(new View.OnClickListener() { 38 @Override 39 public void onClick(View v) { 40 //UPDATE画面に遷移 41 Intent intent = new Intent(getApplication(), UpdateActivity.class); 42 //intentにデータを渡す 43 intent.putExtra("task_data", cb.getText().toString()); 44 startActivity(intent); 45 } 46 }); 47 delete_btn.setOnClickListener(new View.OnClickListener() { 48 @Override 49 public void onClick(View v) { 50 //データベースを削除 51 deleteDb(cb.getText().toString()); 52 53 //CheckBoxが入っているLayoutを取得 54 LinearLayout ll = (LinearLayout)cb.getParent(); 55 //Layoutが入ってるLayoutを取得 56 LinearLayout ll_p = (LinearLayout)ll.getParent(); 57 //CheckBoxの入っているLayoutのindexを取得 58 int ll_index = ((ViewGroup)ll_p).indexOfChild(ll); 59 //CheckBoxの入っているLayoutを削除 60 ll_p.removeViewAt(ll_index); 61 } 62 }); 63 64 //LinearLayoutの設定 65 LinearLayout layout = new LinearLayout(MainActivity.this);//インスタンスの生成 66 layout.setGravity(Gravity.CENTER_VERTICAL);//Gravityの設定 67 68 //CheckBoxとImageButtonの間をうめるやつ 69 View view = new View(MainActivity.this); 70 LinearLayout.LayoutParams v_lp = new LinearLayout.LayoutParams( 71 ViewGroup.LayoutParams.WRAP_CONTENT, 1, 1f); 72 view.setLayoutParams(v_lp); 73 74 //LinearLayoutに部品を追加 75 layout.addView(cb); 76 layout.addView(view); 77 layout.addView(edit_btn); 78 layout.addView(delete_btn); 79 80 //layoutのLayoutParams 81 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 82 ViewGroup.LayoutParams.MATCH_PARENT, row_h); 83 layout.setLayoutParams(params); 84 85 return layout; 86 } 87 88 //データベースを削除 89 protected void deleteDb(String task_str){ 90 //データベースの取得 91 MyDBHelper helper = new MyDBHelper(MainActivity.this); 92 SQLiteDatabase db = helper.getWritableDatabase(); 93 94 //データベースの削除 95 db.delete("default_tb", "task_col =?", new String[]{task_str}); 96 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。