[Android] ButtonをJavaコードだけで設定する

レイアウトを コードだけで記述 することで例えば、ボタンの位置や大きさを自由に「動的」に変えることができます。

Android Studio
2021.1.1




Button

 
レイアウトは他にもありますが、LinearLayoutのケースで基本的な設定とダイナミックにボタンの位置を変更したり、またRelativeLayoutのケースでも確認してみたいと思います。
 

 

setContentView

 
setContentView はその名の通り、スクリーン画面にViewを設定するメソッドです。設定されるViewはいくつかあるLayout形式の一つでまとめられたViewグループになります。

1x1.trans - [Android] ButtonをJavaコードだけで設定する

setContentViewのメソッドは引数の取り方でいくつかあります

  1. setContentView(int layoutResID)
    • レイアウトXMLファイルのIDを指定
  2. setContentView(View view)
    • 簡略形です。今回はこれを使います
  3. setContentView(View view, ViewGroup.LayoutParams params)

Ref: Android Developer

以下は1.の例で activity_main.xml を設定しています
 


 
このactivity_main.xmlの設定は静的、staticなものでアプリ起動中に簡単に変更することはできません。レイアウトを動的、dynamicに変化させたい場合は上の2.を使います。
 

 

LinearLayoutのケース

 
ButtonをタップするとTextViewの表示を変える 簡単な例 を レイアウトファイル xml で作成しました。これをコードで書くとこのようになります。Buttonのインスタンス生成は、
 


 
レイアウトファイルに記述していたLinieaLayout部分は
 


 
となりますが、レイアウトXMLファイルを使わないので、その他にButtonやTextViewのレイアウトも設定します。
 
クリックリスナーは変わりません
 

 

簡単なサンプルコード

 
まとめるとこのようになります。

MainActivity.java


 
リソースファイルは必要です。
res\values\strings.xml


 
1x1.trans - [Android] ButtonをJavaコードだけで設定する


相変わらずレイアウトが…ですが以降で味付けしてみます。
 

ボタン位置を動的に変える

 
基本的なコードから、中央寄せ、テキストサイズの変更などを加えます。
 
MainActivity.java


 
リソースは同じです。

1x1.trans - [Android] ButtonをJavaコードだけで設定する

Dynamicにボタンを変更:
これだけだとあまりありがたみが無いですが、画面サイズに応じて動的に位置や大きさを変化させてみます。
MainActivity.java


 

1x1.trans - [Android] ButtonをJavaコードだけで設定する
1x1.trans - [Android] ButtonをJavaコードだけで設定する

 
ボタンの横幅を250dp,縦幅を100dp
マージンを 左5dp,上50dp, 右50dp に変えてみました
dpについてはdp, px, dpi, sp アプリ画面の解像度単位を包括・統一的に扱うを参照してください

テキストの色を変えたり
テキストサイズを変えたりなどは
xmlと絡めて簡単にできますが
位置の調整はこのようにする必要があります

Buttonのタップを匿名クラスで取得していますが、他にもいくつも方法があります。
onClickListenerの色々な設定

 

RelativeLayoutのケース

 
LinearLayoutと基本的には同じですが、RelativeLayoutとしての位置指定が必要です。
+αで多少アレンジしてみました。
 
MainActivity.java


 

 

サンプル動画

 

 
 
関連ページ:

References:
setContentView
LinearLayout
RelativeLayout

シェアする

  • このエントリーをはてなブックマークに追加

フォローする