teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コメントに対する追記

2020/06/05 14:33

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -39,4 +39,54 @@
39
39
 
40
40
  * [背景色の設定](https://www.javadrive.jp/android/textview/index4.html)
41
41
 
42
- 上記はTextViewですが、Viewを継承していればどれも一緒です。
42
+ 上記はTextViewですが、Viewを継承していればどれも一緒です。
43
+
44
+ ---
45
+
46
+ > の方法だと、あらかじめメソッドに記述されているコードでしか背景色が変わりません。
47
+ > ②のメソッドを引数付きでMainActivityから呼び出して、任意の色に変更したいのですが。。
48
+
49
+ 微妙に理解できないのですが、こういうことですか。
50
+
51
+ ```java
52
+ // 一部省略してます。
53
+ public class MainActivity extends AppCompatActivity
54
+ {
55
+ @Override protected void onCreate(Bundle savedInstanceState)
56
+ {
57
+ super.onCreate(savedInstanceState);
58
+ setContentView(R.layout.activity_main);
59
+
60
+ MyView view = (MyView)this.findViewById(R.id.view1);
61
+ /*
62
+ わざわざメソッドを作らなくても背景色を変えるだけならばこれでいいはずですが
63
+ view.setBackgroundColor(Color.BLUE);
64
+ */
65
+ // あえてメソッドを作る理由があるのであれば
66
+ view.setMyColor(Color.BLUE);
67
+ }
68
+ }
69
+ ```
70
+
71
+ ```java
72
+ // 一部省略してます。
73
+ public class MyView extends View
74
+ {
75
+ int mColor;
76
+
77
+ @Override
78
+ protected void onDraw(Canvas canvas)
79
+ {
80
+ super.onDraw(canvas);
81
+
82
+ canvas.drawColor(mColor);
83
+ }
84
+
85
+ public void setMyColor(int color)
86
+ {
87
+ mColor = color;
88
+ // 基本的にすぐにはonDrawを呼んでくれないので、呼んでもらえるようにする。
89
+ invalidate();
90
+ }
91
+ }
92
+ ```

1

問に対する回答追加

2020/06/05 14:33

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -25,4 +25,18 @@
25
25
  </androidx.constraintlayout.widget.ConstraintLayout>
26
26
  ```
27
27
 
28
- というように、XMLファイルに「パッケージ名+クラス名」でカスタムViewを指定できますので、後はソースコードで「`setContentView(R.layout.activity_main)`」だけ呼び出せばよいでしょう。
28
+ というように、XMLファイルに「パッケージ名+クラス名」でカスタムViewを指定できますので、後はソースコードで「`setContentView(R.layout.activity_main)`」だけ呼び出せばよいでしょう。
29
+
30
+ ----
31
+ あ、質問に対する回答を書いてなかったわ。
32
+ とは言うものの、時間がないので適当になりますが。
33
+
34
+ > ①上半分とか、相対位置を指定して表示することは可能でしょうか?
35
+
36
+ なんかXMLでの指定はわかってらっしゃるようなので、上記を参考にXMLにカスタムViewを書いて指定してみてはいかがですか。
37
+
38
+ > ②作成したクラスにメソッドを追加して、背景の色を変化させることは可能でしょうか?
39
+
40
+ * [背景色の設定](https://www.javadrive.jp/android/textview/index4.html)
41
+
42
+ 上記はTextViewですが、Viewを継承していればどれも一緒です。