問題文
Android-sdkのサンプルフォルダーにある「softkeyboard」の例に従って、独自の仮想キーボードを実装しようとしています。
onCreateInputView() では、次のようなレイアウト インフレータでビューが作成されます。
@Override
public View onCreateInputView() {
mContainerView = getLayoutInflater().inflate(R.layout.my_keyboard, null);
return mContainerView;
}
私の美しい仮想キーボード GUI 定義 (my_keyboard.xml) では、このようなボタンをいくつか追加しました。
<Button
android:id="@+id/my_button1"
android:onClick="onMyButton1Pressed"
android:text="@string/my_button1_text" />
プログラムを実行すると、ボタンが機能しているように見えます: onMyButton1Pressed() が呼び出されます OK. 問題は、ボタンの状態の描画 (押したときにオレンジ色のハイライト) が機能しないことです。
EDIT 1:問題は ToggleButton と同じです: 押されたとき、オレンジ色のハイライトは表示されません。ただし、緑色の「チェック」マークは機能します。これらを通常のアクティビティで使用すると、ボタンが押されているときに押し下げるとオレンジ色のハイライトが表示されます。
これまでの私の発見は、役に立つかどうか...
私はグーグルしようとしていて、アンドロイドのドキュメントを読んでいます。どこかで、null ルート要素でインフレートを使用すると、テーマ/スタイル/バックグラウンド-ドローアブル/その他 (正しい用語は何ですか?) がインフレートされた階層に適用されないことを読みました。ボタンの状態が表示されないのはなぜですか?
仮想キーボードを作成するとき、キーボードが追加されるルート要素は何ですか?
また、別のインフレ方法を見つけました:
public View inflate (int resource, ViewGroup root, boolean attachToRoot)
resource = ID for an XML layout resource to load (e.g., R.layout.main_page)
root = Optional view to be the parent of the generated hierarchy (if attachToRoot is true), or else simply an object that provides a set of LayoutParams values for root of the returned hierarchy (if attachToRoot is false.)
attachToRoot = Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML.
レイアウトパラメータを抽出できる「ダミー」ビューグループを渡すことはできますか?