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

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

Android Studio 3.1.4
API 28

 



Button

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

 

 

setContentView

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

textview code a01d 450x199 - [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

 
button code 1 - [Android] ButtonをJavaコードだけで設定する
相変わらずレイアウトが…ですが以降で味付けしてみます。

 

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

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

 
button code 2 - [Android] ButtonをJavaコードだけで設定する
Dynamicにボタンを変更:
これだけだとあまりありがたみが無いですが、画面サイズに応じて動的に位置や大きさを変化させてみます。
MainActivity.java

 

button2 1 171x300 - [Android] ButtonをJavaコードだけで設定する
button2 2 171x300 - [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

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加


 


ページのトップへ戻る




シェアする

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

フォローする