0

Androidユーザーの皆さん、こんにちは...

電話が回転しているときに、Horizo​​ntalScrollView のコンテンツのサイズ変更に問題があります。サイズ変更を自分で処理したいので、Horizo​​ntalScrollView を含むアクティビティで onConfigurationChanged をオーバーライドしています。ただし、コンテンツのサイズ変更をどこに置くべきかを見つけるのに大きな問題があります。Horizo​​ntalScrollView 自体には、幅として FILL_PARENT があり、高さは固定されています。アイデアは、それぞれが Horizo​​ntalScrollView 自体と同じ幅のコンテンツのいくつかのセルを持ちながら、常に画面の幅を埋める必要があるということです。

私の Horizo​​ntalScrollView のコンテンツは、1 つの LinearLayout (wrapperLayout と呼びましょう) とその中にいくつかの LinearLayouts で構成されています。電話が回転すると、wrapperLayout 内のすべての LinearLayouts の幅を変更したいだけです。これは簡単に実行でき、サイズ変更コードを onInterceptTouchEvent(MotionEvent ev) に入れてテストするとうまく機能します。

サイズ変更コードを実行するのに適した場所を見つけようとすると、問題が発生します。これにより、電話が回転すると自動的にサイズ変更が行われます。requestLayout、onSizeChanged、onLayout、onConfigurationChanged、およびその他のいくつかの可能な組み合わせをすべて試し、サイズ変更コードの前後でスーパーへの呼び出しを変更しました (存在する場合)。私はこれを機能させることができず (サイズ変更コードが実行されてもビューのサイズが変更されません)、本当にイライラします。サイズ変更コードを呼び出す前に、Horizo​​nalScrollView の幅が実際に変更されていることを確認するために、多くのログを記録しましたが、役に立ちませんでした。

何が起こっているのか、誰にも手がかりがありますか? このように onConfigurationChanged を自分で処理すると、どのメソッドがどのような順序で呼び出されますか?

前もって感謝します

4

1 に答える 1

-1

ビューコントローラのオリエンテーションコールを使用していない理由はありますか?すなわち

// Override to allow orientations other than the default portrait orientation.

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

簡単かもしれないと思います。

于 2010-05-16T12:33:42.783 に答える