Skip to content

Commit 696edca

Browse files
author
jfeinstein10
committed
Tricking ActionBarSherlock. No longer need my custom installDecor method exposed.
1 parent 274b81a commit 696edca

File tree

5 files changed

+288
-29
lines changed

5 files changed

+288
-29
lines changed

library/src/com/slidingmenu/lib/app/SlidingActivity.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@
99
import android.view.View.OnClickListener;
1010
import android.view.ViewGroup;
1111
import android.view.ViewGroup.LayoutParams;
12+
import android.view.Window;
1213
import android.widget.AdapterView;
1314
import android.widget.ArrayAdapter;
1415
import android.widget.ImageView;
1516
import android.widget.LinearLayout;
1617
import android.widget.ListView;
17-
import android.widget.RelativeLayout;
1818
import android.widget.TextView;
1919

20-
import com.actionbarsherlock.ActionBarSherlockCompat;
2120
import com.actionbarsherlock.app.SherlockActivity;
2221
import com.slidingmenu.lib.R;
2322
import com.slidingmenu.lib.SlidingMenu;
@@ -26,6 +25,7 @@ public class SlidingActivity extends SherlockActivity implements SlidingActivity
2625

2726
private SlidingMenu mSlidingMenu;
2827
private View mMainLayout;
28+
private WindowHelper mWindowHelper;
2929
private boolean mContentViewCalled = true;
3030
private boolean mBehindContentViewCalled = true;
3131
private SlidingMenuList mMenuList;
@@ -34,10 +34,8 @@ public void onCreate(Bundle savedInstanceState) {
3434
super.onCreate(savedInstanceState);
3535
super.setContentView(R.layout.slidingmenumain);
3636
mSlidingMenu = (SlidingMenu) super.findViewById(R.id.slidingmenulayout);
37+
mWindowHelper = new WindowHelper(this, super.getWindow(), mSlidingMenu);
3738
// generate the ActionBar inside an arbitrary RelativeLayout
38-
RelativeLayout mainView = new RelativeLayout(this);
39-
((ActionBarSherlockCompat)getSherlock()).installDecor(mainView);
40-
mSlidingMenu.setViewAbove(mainView);
4139
mMainLayout = super.findViewById(R.id.slidingmenulayout);
4240
}
4341

@@ -49,8 +47,11 @@ public void onPostCreate(Bundle savedInstanceState) {
4947
}
5048
mSlidingMenu.setStatic(isStatic());
5149
}
50+
51+
public Window getWindow() {
52+
return mWindowHelper;
53+
}
5254

53-
@Override
5455
public void setContentView(int id) {
5556
setContentView(getLayoutInflater().inflate(id, null));
5657
}

library/src/com/slidingmenu/lib/app/SlidingActivityBase.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ public interface SlidingActivityBase {
1010
public void setBehindContentView(View v, LayoutParams p);
1111

1212
public SlidingMenu getSlidingMenu();
13-
14-
boolean isStatic();
15-
13+
1614
public void toggle();
1715

1816
public void showAbove();

library/src/com/slidingmenu/lib/app/SlidingFragmentActivity.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,37 @@
99
import android.view.View.OnClickListener;
1010
import android.view.ViewGroup;
1111
import android.view.ViewGroup.LayoutParams;
12+
import android.view.Window;
1213
import android.widget.AdapterView;
1314
import android.widget.ArrayAdapter;
1415
import android.widget.ImageView;
15-
import android.widget.LinearLayout;
1616
import android.widget.ListView;
1717
import android.widget.RelativeLayout;
1818
import android.widget.TextView;
1919

20-
import com.actionbarsherlock.ActionBarSherlockCompat;
2120
import com.actionbarsherlock.app.SherlockFragmentActivity;
2221
import com.slidingmenu.lib.R;
2322
import com.slidingmenu.lib.SlidingMenu;
2423

2524
public class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase {
2625

2726
private SlidingMenu mSlidingMenu;
28-
private View mMainLayout;
27+
private ViewGroup mContentView;
2928
private boolean mContentViewCalled = true;
3029
private boolean mBehindContentViewCalled = true;
3130
private SlidingMenuList mMenuList;
3231

3332
public void onCreate(Bundle savedInstanceState) {
3433
super.onCreate(savedInstanceState);
35-
super.setContentView(R.layout.slidingmenumain);
36-
mSlidingMenu = (SlidingMenu) super.findViewById(R.id.slidingmenulayout);
37-
// generate the ActionBar inside an arbitrary RelativeLayout
38-
RelativeLayout mainView = new RelativeLayout(this);
39-
((ActionBarSherlockCompat)getSherlock()).installDecor(mainView);
40-
mSlidingMenu.setViewAbove(mainView);
41-
mMainLayout = super.findViewById(R.id.slidingmenulayout);
34+
// unregister the current content view
35+
getWindow().getDecorView().findViewById(android.R.id.content).setId(View.NO_ID);
36+
// register a new content view
37+
mContentView = new RelativeLayout(this);
38+
mContentView.setId(android.R.id.content);
39+
// set up the SlidingMenu
40+
mSlidingMenu = (SlidingMenu) getLayoutInflater().inflate(R.layout.slidingmenumain, null);
41+
mSlidingMenu.setViewAbove(mContentView);
42+
super.setContentView(mSlidingMenu);
4243
}
4344

4445
public void onPostCreate(Bundle savedInstanceState) {
@@ -47,9 +48,20 @@ public void onPostCreate(Bundle savedInstanceState) {
4748
throw new IllegalStateException("Both setContentView and " +
4849
"setBehindContentView must be called in onCreate.");
4950
}
50-
mSlidingMenu.setStatic(isStatic());
5151
}
5252

53+
// public Window getWindow() {
54+
// if (mWindowHelper == null) {
55+
// return super.getWindow();
56+
// } else {
57+
// return mWindowHelper;
58+
// }
59+
// }
60+
//
61+
// private Window getWindowInternal() {
62+
// return super.getWindow();
63+
// }
64+
5365
@Override
5466
public void setContentView(int id) {
5567
setContentView(getLayoutInflater().inflate(id, null));
@@ -63,7 +75,7 @@ public void setContentView(View v, LayoutParams params) {
6375
if (!mContentViewCalled) {
6476
mContentViewCalled = true;
6577
}
66-
getSherlock().setContentView(v);
78+
mContentView.addView(v);
6779
}
6880

6981
public void setBehindContentView(int id) {
@@ -81,10 +93,6 @@ public void setBehindContentView(View v, LayoutParams params) {
8193
mSlidingMenu.setViewBehind(v);
8294
}
8395

84-
public boolean isStatic() {
85-
return mMainLayout instanceof LinearLayout;
86-
}
87-
8896
public SlidingMenu getSlidingMenu() {
8997
return mSlidingMenu;
9098
}
@@ -104,12 +112,10 @@ public void toggle() {
104112
}
105113

106114
public void showAbove() {
107-
if (isStatic()) return;
108115
mSlidingMenu.showAbove();
109116
}
110117

111118
public void showBehind() {
112-
if (isStatic()) return;
113119
mSlidingMenu.showBehind();
114120
}
115121

library/src/com/slidingmenu/lib/app/SlidingListActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import android.widget.RelativeLayout;
1818
import android.widget.TextView;
1919

20-
import com.actionbarsherlock.ActionBarSherlockCompat;
2120
import com.actionbarsherlock.app.SherlockListActivity;
2221
import com.slidingmenu.lib.R;
2322
import com.slidingmenu.lib.SlidingMenu;
@@ -38,7 +37,7 @@ public void onCreate(Bundle savedInstanceState) {
3837
mSlidingMenu = (SlidingMenu) super.findViewById(R.id.slidingmenulayout);
3938
// generate the ActionBar inside an arbitrary RelativeLayout
4039
RelativeLayout mainView = new RelativeLayout(this);
41-
((ActionBarSherlockCompat)getSherlock()).installDecor(mainView);
40+
// ((ActionBarSherlockCompat)getSherlock()).installDecor(mainView);
4241
mSlidingMenu.setViewAbove(mainView);
4342
mMainLayout = super.findViewById(R.id.slidingmenulayout);
4443
}

0 commit comments

Comments
 (0)