[解決済み] Androidのカスタムビューには3つすべてのコンストラクタが必要ですか?
2022-04-28 09:58:05
質問
カスタムビューを作成する際、多くの人がこのように行っているようなのですが。
public MyView(Context context) {
super(context);
// this constructor used when programmatically creating view
doAdditionalConstructorWork();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// this constructor used when creating view through XML
doAdditionalConstructorWork();
}
private void doAdditionalConstructorWork() {
// init variables etc.
}
最初の疑問は、コンストラクタの
MyView(Context context, AttributeSet attrs, int defStyle)
? どこで使われているのかわからないのですが、スーパークラスで見かけます。 それは必要ですか、そしてどこで使われていますか?
そこに この質問に対するもう一つの答え .
解決方法を教えてください。
もし、あなたがカスタム
View
から
xml
も好きです。
<com.mypack.MyView
...
/>
を使用する場合は、コンストラクタ
public MyView(Context context, AttributeSet attrs)
そうでない場合は
Exception
を膨らませようとするとき、Androidは
View
.
もし、あなたが
View
から
xml
を指定し、さらに
android:style
のような属性があります。
<com.mypack.MyView
style="@styles/MyCustomStyle"
...
/>
2番目のコンストラクタも呼び出され、デフォルトのスタイルが
MyCustomStyle
明示的なXML属性を適用する前に。
3 番目のコンストラクタは、通常、アプリケーション内のすべての View が同じスタイルになるようにする場合に使用します。
関連
-
adb devices OffLine Solution(オフラインソリューション
-
[解決済み】Android "ビュー階層を作成した元のスレッドだけが、そのビューに触れることができる"
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
repo: コマンドが見つかりません
-
アンドロイドリストビュー
-
超シンプルなアンドロイドのタイムディレイ機能
-
Android Studio http://schemas.android.com/apk/res/android 「URIが登録されていません」の解決方法について
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
IllegalStateException。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
GoogleMapと連携し、位置情報の取得が可能
-
Android ProgressBarの色を変更する
-
アンドロイドスタジオ学習入門
-
Android TextViewは、テキスト内容が表示省略記号を超えているかどうかを判断する