質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1928閲覧

linearlayoutの間を詰めたい

olee46

総合スコア32

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/06/26 17:00

困っていること

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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Buttonのpaddingの設定で解決しました。

java

1btn.setPadding(0, 0, 0, 0);

でスキマがなくなりました。

CheckBox, LinearLayoutのpaddingは関係ないようです

投稿2017/06/26 17:16

olee46

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問