3

FrameLayout 内のアニメーション化された GLSurfaceView の上にすべて配置された、いくつかの異なる LinearLayouts のいくつかのボタンで構成されるメニューを設計しました。ユーザーがインターフェイスのボタンをクリックすると、次のレイアウトを作成する前に、現在のレイアウトの可視GONE性をただし、それは FrameLayout 内には含まれていません)VISIBLEGONE

ほとんどの携帯電話では、メニューは魔法のように機能しますが、Xperia Ray で簡単なテストを行ったところ、ボタンをクリックしないため、どこにも行けないことがわかりました。ほとんどの onClick リスナーにLog.dタグを設定しましたが、この場合、それらは Logcat に表示されないため、リスナーがまったく起動していないように見えます。また、GLSurfaceView が独自の TouchEventListener から何も返していないことにも気付きました。トップメニューで GLSurfaceView をタップしてトリガーされる機能が無効になっている場合でも、通常は Logcat にメッセージが表示されます。

FrameLayoutの使用方法に関係があるのではないかと思いました。ドキュメントには、子を 1 つだけ持つ必要があると書かれていますが、Android 開発者について読んだ別の記事では、FrameLayout 内の ImageViews にテキストを表示することで、画像にキャプションを付ける方法を示しました。

最後に、エミュレーターでテストしたところ、Android v2.3 と Android v4 の両方がレイと同じ動作を示すことがわかりました。現在、アプリを完全に実行するAndroid v2.2を除いて、これらは私が確信している唯一のものです。エミュレーターでのテスト結果を信用するのはためらわれます。

続行するエラーメッセージがないので、私は個人的に困惑していますが、誰か解決策を提案できますか?

4

1 に答える 1

2

解決策を見つけました。

ScrollViewz オーダーでルート レイアウトの上にあり、デフォルトで表示されているレイアウトにぶら下がっていたことがわかりました。このビューの可視性を切り替える代わりに、子レイアウトのためにそうしていました。おっとっと。

私がテストしたほとんどのデバイスでScrollViewは、アプリの機能に影響はありませんでした。おそらく、空のレイアウトにより、その背後にあるボタンをクリックできるようになっていたためです。ただし、Xperia Ray などの一部のデバイスでは、レイアウトを介してクリックを渡すことができるかどうかがもう少し厳密であることが判明しています (おそらくパフォーマンスの決定)。

これScrollViewはレイアウトの必須部分だったので、簡単に削除することはできませんでした。代わりにandroid:visibilty、ScrollView に属性を指定してGONE、インターフェイスで必要になるまでそれが続くようにし、ユーザーがボタンをクリックするのをブロックしないようにしました。

于 2012-06-23T22:16:20.247 に答える