この API8 の例を改善する方法を提案できる人はいますか? 彼らは、ビューは XML で定義できた可能性があると言っていますが、実際に行ったことは、ビューを Java でコーディングしたことです。彼らがそうしたかった理由がわかります。彼らはいくつかのメンバーを拡張 LinearLayout に追加しており、値は実行時に決定されます。
ああ、宇宙のみんなによると、レイアウト ディレクティブは XML に移行する必要があります。ただし、このアプリでは、ランタイム ロジックでテキストをそのまま設定しておくのが理にかなっています。そのため、ハイブリッド アプローチを採用しています。ビューを膨らませてから、ダイナミック テキストを入力します。それを実現する方法がわからなくて困っています。これがソースと私が試したものです。
private class SpeechView extends LinearLayout {
public SpeechView(Context context, String title, String words) {
super(context);
this.setOrientation(VERTICAL);
// Here we build the child views in code. They could also have
// been specified in an XML file.
mTitle = new TextView(context);
mTitle.setText(title);
...
LinearLayout には android:id="@+id/LinearLayout01" があるので、OnCreate でこれを行うことができるはずです。
SpeechView sv = (SpeechView) findViewById(R.id.LinearLayout01);
しかし、追加した最小限のコンストラクターにはヒットしません。
public class SpeechView extends LinearLayout {
public SpeechView(Context context) {
super(context);
System.out.println("Instantiated SpeechView(Context context)");
}
...