3

同様のライブラリを使用しますgithub.com/bk138/LibSlideMenu

HTC device(ICS)そして、それは 、およびNexus 7(ICS)その他のGingerbreadデバイスで非常にうまく機能しました。

しかし、いくつかのデバイスはMotorola atrix、別のデバイスのようHTCです。

というわけでコードを確認。

View view  = act.findViewById(android.R.id.content);
Utils.Log("<SlideMenu> : VIEW : "+view);        
ViewParent viewParent = view.getParent();
Utils.Log("<SlideMenu> : VIEW : "+viewParent);  
LinearLayout linearLayout = (LinearLayout) viewParent;
Utils.Log("<SlideMenu> : VIEW : "+linearLayout);
content = linearLayout;

FrameLayoutここでは、すべてのデバイスで最初に返されます。

しかし、2番目のものはデバイスと他のデバイスで返さLinearLayoutれ、一部のデバイスは を返します。ICSHTC 2.3DecorView

この投稿を参照します:DecorView Child FrameLayout

の使い方NoTitleBarに問題があるとのことで、タイトルバーを表示したのですが、動きません。

また、属性を追加したにもかかわらずNoTitleBar、一部のデバイスは非常にうまく機能します。

デバイスによって結果が異なるので、本当にイライラします。誰かそれについて知っていますか?

助けてください :D よろしくお願いします。

4

4 に答える 4

6

PhoneWindow$DecorView に関して、いくつかのことを確信できると思います (少なくとも、Android 向けの開発と同じくらい確実です)。

まず、DecorView は FrameLayout を拡張するため、親クラスの ViewGroup に確実にキャストできます。第二に、DecorView に親クラスの View が含まれていることも確信できます (そうでない場合、かなり退屈な ViewGroup になります)。

これにより、問題のライブラリ コードが試みているように、この問題はボトムアップではなく、トップダウンで対処する必要があるという結論に至りました。

たとえば、次のようなものです。

ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
View oldScreen = decorView.getChildAt(0);
decorView.removeViewAt(0);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
SlidingPanel slidingPanel = (SlidingPanel) inflater.inflate(R.layout.screen_slider, null);
((ViewGroup) slidingPanel.findViewById(R.id.anterior)).addView(oldScreen);
decorView.addView(slidingPanel, 0);

私は最近、同様の初歩的な SlidingPanel ウィジェットを実装し、上記のようにそれを利用しています。https://github.com/mubeta06/android/tree/master/SlidingFrameでそれとさらなる使用例を見つけることができます。

于 2012-10-09T16:05:29.913 に答える
1

android.R.id.contentその親は言うまでもなく、のレイアウト タイプを指定する Android SDK ドキュメントには何もありません。これは、Android OS のリリース、デバイス メーカーの変更、または改造された ROM の変更によって異なる場合があります。ほとんどの SDK 開発者は;の親に触れることすらすべきではありません。android.R.id.contentそれについて具体的なことを想定する必要はありません。

于 2012-08-24T12:56:49.970 に答える
0

LibSlideMenuに対して行ったこのリンクを確認してください。

private static ViewGroup parent;

FrameLayout.LayoutParamsすべてに変換

LayoutParams  parent = (ViewGroup) act.getWindow().getDecorView();
于 2012-12-11T10:27:44.643 に答える
0

https://github.com/bk138/LibSlideMenu/commit/9b9ae22c8e463559324e377f6e89a430dd4fd7caで問題が解決されることを願っています。

于 2012-08-27T16:46:06.387 に答える