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

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

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

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

Q&A

解決済

1回答

323閲覧

ImageButtonのサイズが端末に寄って変わる

olee46

総合スコア32

Android Studio

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

0グッド

0クリップ

投稿2017/06/26 14:30

編集2017/06/26 16:50

困っていること

  • 端末によって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

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらく解像度の違いです。
px指定ではなく、dpを考慮したサイズを指定しましょう。

投稿2017/06/26 15:58

yona

総合スコア18155

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

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

olee46

2017/06/26 16:49

解決しました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問