Update ActionBarSherlock dependency to version 4.0.1.
@ -1,13 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="51" android:versionName="4.0.1-SNAPSHOT" package="com.actionbarsherlock">
|
||||||
<manifest
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.actionbarsherlock"
|
|
||||||
android:versionCode="45"
|
|
||||||
android:versionName="4.0.0-SNAPSHOT">
|
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>
|
||||||
android:minSdkVersion="7"
|
|
||||||
android:targetSdkVersion="15" />
|
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
@ -5,11 +5,11 @@ This folder contains the main library which should be linked against as an
|
|||||||
Android library project in your application.
|
Android library project in your application.
|
||||||
|
|
||||||
For more information see the "Including In Your Project" section of the
|
For more information see the "Including In Your Project" section of the
|
||||||
[download page][1].
|
[usage page][1].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[1]: http://actionbarsherlock.com/download.html
|
[1]: http://actionbarsherlock.com/usage.html
|
||||||
|
BIN
libs/ActionBarSherlock/libs/android-support-v4.jar
Normal file
@ -11,20 +11,36 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.actionbarsherlock</groupId>
|
<groupId>com.actionbarsherlock</groupId>
|
||||||
<artifactId>parent</artifactId>
|
<artifactId>parent</artifactId>
|
||||||
<version>4.0.0-SNAPSHOT</version>
|
<version>4.0.1</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>android</groupId>
|
<groupId>com.google.android</groupId>
|
||||||
<artifactId>android</artifactId>
|
<artifactId>android</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.android</groupId>
|
||||||
|
<artifactId>support-v4</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pivotallabs</groupId>
|
||||||
|
<artifactId>robolectric</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<sourceDirectory>src</sourceDirectory>
|
<sourceDirectory>src</sourceDirectory>
|
||||||
|
<testSourceDirectory>test</testSourceDirectory>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -101,5 +117,70 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.eclipse.m2e</groupId>
|
||||||
|
<artifactId>lifecycle-mapping</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<configuration>
|
||||||
|
<lifecycleMappingMetadata>
|
||||||
|
<pluginExecutions>
|
||||||
|
<pluginExecution>
|
||||||
|
<pluginExecutionFilter>
|
||||||
|
<groupId>com.google.code.maven-replacer-plugin</groupId>
|
||||||
|
<artifactId>maven-replacer-plugin</artifactId>
|
||||||
|
<versionRange>[1.4.1,)</versionRange>
|
||||||
|
<goals>
|
||||||
|
<goal>replace</goal>
|
||||||
|
</goals>
|
||||||
|
</pluginExecutionFilter>
|
||||||
|
<action>
|
||||||
|
<ignore />
|
||||||
|
</action>
|
||||||
|
</pluginExecution>
|
||||||
|
</pluginExecutions>
|
||||||
|
</lifecycleMappingMetadata>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>release</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>performRelease</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
|
||||||
|
<artifactId>android-maven-plugin</artifactId>
|
||||||
|
<version>${android-maven.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<manifest>
|
||||||
|
<versionCodeAutoIncrement>true</versionCodeAutoIncrement>
|
||||||
|
</manifest>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>manifestUpdate</id>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>manifest-update</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Copyright (C) 2011 The Android Open Source Project
|
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@ -14,6 +14,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<resources>
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<bool name="abs__action_bar_expanded_action_views_exclusive">false</bool>
|
<item android:state_enabled="false" android:color="@color/abs__bright_foreground_disabled_holo_dark"/>
|
||||||
</resources>
|
<item android:color="@color/abs__bright_foreground_holo_dark"/> <!-- not selected -->
|
||||||
|
</selector>
|
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_enabled="false" android:color="@color/abs__bright_foreground_disabled_holo_light"/>
|
||||||
|
<item android:color="@color/abs__bright_foreground_holo_light"/> <!-- not selected -->
|
||||||
|
</selector>
|
||||||
|
|
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 192 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 505 B |
After Width: | Height: | Size: 154 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 122 B |
After Width: | Height: | Size: 168 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 622 B |
After Width: | Height: | Size: 332 B |
After Width: | Height: | Size: 355 B |
After Width: | Height: | Size: 151 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 290 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 699 B |
After Width: | Height: | Size: 935 B |
After Width: | Height: | Size: 158 B |
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2008 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
|
||||||
|
<item android:state_activated="true" android:drawable="@drawable/abs__list_activated_holo" />
|
||||||
|
<item android:drawable="@android:color/transparent" />
|
||||||
|
</selector>
|
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2008 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
|
||||||
|
<item android:state_activated="true" android:drawable="@drawable/abs__list_activated_holo" />
|
||||||
|
<item android:drawable="@android:color/transparent" />
|
||||||
|
</selector>
|
@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2011 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/abs__action_mode_close_button"
|
||||||
|
android:focusable="true"
|
||||||
|
android:clickable="true"
|
||||||
|
android:paddingLeft="8dip"
|
||||||
|
style="?attr/actionModeCloseButtonStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginRight="16dip">
|
||||||
|
<ImageView android:layout_width="48dip"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:scaleType="center"
|
||||||
|
android:src="?attr/actionModeCloseDrawable" />
|
||||||
|
<TextView android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginLeft="4dip"
|
||||||
|
android:layout_marginRight="16dip"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:text="@string/abs__action_mode_done" />
|
||||||
|
</com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout>
|
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
|
||||||
|
**
|
||||||
|
** Copyright 2008, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@android:id/text1"
|
||||||
|
style="?android:attr/spinnerDropDownItemStyle"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/dropdownListPreferredItemHeight"
|
||||||
|
android:ellipsize="marquee" />
|
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@android:id/text1"
|
||||||
|
style="?android:attr/spinnerItemStyle"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="marquee" />
|
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is an optimized layout for a screen with the Action Bar enabled.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:fitsSystemWindows="true"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarContainer
|
||||||
|
android:id="@+id/abs__action_bar_container"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="?attr/actionBarStyle">
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarView
|
||||||
|
android:id="@+id/abs__action_bar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="?attr/actionBarStyle" />
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarContextView
|
||||||
|
android:id="@+id/abs__action_context_bar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
style="?attr/actionModeStyle" />
|
||||||
|
</com.actionbarsherlock.internal.widget.ActionBarContainer>
|
||||||
|
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout
|
||||||
|
android:id="@+id/abs__content"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="0dip"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:foregroundGravity="fill_horizontal|top"
|
||||||
|
android:foreground="?attr/windowContentOverlay" />
|
||||||
|
</LinearLayout>
|
@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is an optimized layout for a screen with
|
||||||
|
the Action Bar enabled overlaying application content.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:fitsSystemWindows="true">
|
||||||
|
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent" />
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarContainer android:id="@+id/abs__action_bar_container"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="?attr/actionBarStyle"
|
||||||
|
android:gravity="top">
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarView
|
||||||
|
android:id="@+id/abs__action_bar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="?attr/actionBarStyle" />
|
||||||
|
<com.actionbarsherlock.internal.widget.ActionBarContextView
|
||||||
|
android:id="@+id/abs__action_context_bar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
style="?attr/actionModeStyle" />
|
||||||
|
</com.actionbarsherlock.internal.widget.ActionBarContainer>
|
||||||
|
<ImageView android:src="?attr/windowContentOverlay"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/abs__action_bar_container" />
|
||||||
|
</RelativeLayout>
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<com.actionbarsherlock.internal.widget.IcsLinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
style="?attr/actionBarTabBarStyle"
|
||||||
|
/>
|
@ -37,7 +37,7 @@
|
|||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:focusable="false" />
|
android:focusable="false" />
|
||||||
<Button android:id="@+id/abs__textButton"
|
<com.actionbarsherlock.internal.widget.CapitalizingButton android:id="@+id/abs__textButton"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/abs__action_mode_close_button"
|
android:id="@+id/abs__action_mode_close_button"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
@ -28,4 +28,4 @@
|
|||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:src="?attr/actionModeCloseDrawable" />
|
android:src="?attr/actionModeCloseDrawable" />
|
||||||
</LinearLayout>
|
</com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout>
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
**
|
||||||
|
** Copyright 2011, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<com.actionbarsherlock.internal.widget.IcsLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/abs__activity_chooser_view_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
style="?attr/activityChooserViewStyle">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/abs__expand_activities_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:focusable="true"
|
||||||
|
android:addStatesFromChildren="true"
|
||||||
|
android:background="?attr/actionBarItemBackground">
|
||||||
|
|
||||||
|
<ImageView android:id="@+id/abs__image"
|
||||||
|
android:layout_width="56dip"
|
||||||
|
android:layout_height="36dip"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:paddingTop="2dip"
|
||||||
|
android:paddingBottom="2dip"
|
||||||
|
android:paddingLeft="12dip"
|
||||||
|
android:paddingRight="12dip"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:adjustViewBounds="true" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/abs__default_activity_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:focusable="true"
|
||||||
|
android:addStatesFromChildren="true"
|
||||||
|
android:background="?attr/actionBarItemBackground">
|
||||||
|
|
||||||
|
<ImageView android:id="@+id/abs__image"
|
||||||
|
android:layout_width="56dip"
|
||||||
|
android:layout_height="36dip"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:paddingTop="2dip"
|
||||||
|
android:paddingBottom="2dip"
|
||||||
|
android:paddingLeft="12dip"
|
||||||
|
android:paddingRight="12dip"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:adjustViewBounds="true" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</com.actionbarsherlock.internal.widget.IcsLinearLayout>
|
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2011 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/abs__list_item"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/dropdownListPreferredItemHeight"
|
||||||
|
android:paddingLeft="16dip"
|
||||||
|
android:paddingRight="16dip"
|
||||||
|
android:minWidth="196dip"
|
||||||
|
android:background="?attr/activatedBackgroundIndicator"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:duplicateParentState="true" >
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/abs__icon"
|
||||||
|
android:layout_width="32dip"
|
||||||
|
android:layout_height="32dip"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginRight="8dip"
|
||||||
|
android:duplicateParentState="true" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/abs__title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textAppearance="?attr/textAppearanceLargePopupMenu"
|
||||||
|
android:duplicateParentState="true"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:fadingEdge="horizontal" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
46
libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
** Copyright 2011, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
This is an optimized layout for a screen, with the minimum set of features
|
||||||
|
enabled.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:fitsSystemWindows="true">
|
||||||
|
<TextView android:id="@android:id/title" style="?android:attr/windowTitleStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="@dimen/abs__alert_dialog_title_height"
|
||||||
|
android:paddingLeft="16dip"
|
||||||
|
android:paddingRight="16dip"
|
||||||
|
android:gravity="center_vertical|left" />
|
||||||
|
<View android:id="@+id/abs__titleDivider"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="2dip"
|
||||||
|
android:background="@color/abs__holo_blue_light" />
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="wrap_content" android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:foreground="?attr/windowContentOverlay">
|
||||||
|
<FrameLayout android:id="@+id/abs__content"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent" />
|
||||||
|
</FrameLayout>
|
||||||
|
</com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow>
|
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
|
||||||
|
**
|
||||||
|
** Copyright 2008, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@android:id/text1"
|
||||||
|
style="?attr/spinnerDropDownItemStyle"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/dropdownListPreferredItemHeight"
|
||||||
|
android:ellipsize="marquee" />
|
@ -1,22 +1,26 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
/* //device/apps/common/assets/res/any/dimens.xml
|
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
|
||||||
**
|
**
|
||||||
** Copyright 2006, The Android Open Source Project
|
** Copyright 2006, The Android Open Source Project
|
||||||
**
|
**
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
** you may not use this file except in compliance with the License.
|
** you may not use this file except in compliance with the License.
|
||||||
** You may obtain a copy of the License at
|
** You may obtain a copy of the License at
|
||||||
**
|
**
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
**
|
**
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
** See the License for the specific language governing permissions and
|
** See the License for the specific language governing permissions and
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
-->
|
-->
|
||||||
<resources>
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
<integer name="abs__max_action_buttons">3</integer>
|
android:id="@android:id/text1"
|
||||||
</resources>
|
style="?attr/spinnerItemStyle"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="marquee" />
|
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/dimens.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<!-- Default height of an action bar. -->
|
||||||
|
<dimen name="abs__action_bar_default_height">40dip</dimen>
|
||||||
|
<!-- Vertical padding around action bar icons. -->
|
||||||
|
<dimen name="abs__action_bar_icon_vertical_padding">4dip</dimen>
|
||||||
|
<!-- Text size for action bar titles -->
|
||||||
|
<dimen name="abs__action_bar_title_text_size">16dp</dimen>
|
||||||
|
<!-- Text size for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_text_size">12dp</dimen>
|
||||||
|
<!-- Top margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_top_margin">-2dp</dimen>
|
||||||
|
<!-- Bottom margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_bottom_margin">4dip</dimen>
|
||||||
|
</resources>
|
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/dimens.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<!-- Default height of an action bar. -->
|
||||||
|
<dimen name="abs__action_bar_default_height">48dip</dimen>
|
||||||
|
<!-- Vertical padding around action bar icons. -->
|
||||||
|
<dimen name="abs__action_bar_icon_vertical_padding">8dip</dimen>
|
||||||
|
<!-- Text size for action bar titles -->
|
||||||
|
<dimen name="abs__action_bar_title_text_size">18dp</dimen>
|
||||||
|
<!-- Text size for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_text_size">14dp</dimen>
|
||||||
|
<!-- Top margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_top_margin">-3dp</dimen>
|
||||||
|
<!-- Bottom margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_bottom_margin">5dip</dimen>
|
||||||
|
</resources>
|
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/* //device/apps/common/assets/res/any/dimens.xml
|
||||||
|
**
|
||||||
|
** Copyright 2006, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<!-- Default height of an action bar. -->
|
||||||
|
<dimen name="abs__action_bar_default_height">56dip</dimen>
|
||||||
|
<!-- Vertical padding around action bar icons. -->
|
||||||
|
<dimen name="abs__action_bar_icon_vertical_padding">4dip</dimen>
|
||||||
|
<!-- Text size for action bar titles -->
|
||||||
|
<dimen name="abs__action_bar_title_text_size">18dp</dimen>
|
||||||
|
<!-- Text size for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_text_size">14dp</dimen>
|
||||||
|
<!-- Top margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_top_margin">-3dp</dimen>
|
||||||
|
<!-- Bottom margin for action bar subtitles -->
|
||||||
|
<dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen>
|
||||||
|
|
||||||
|
<!-- Minimum width for an action button in the menu area of an action bar -->
|
||||||
|
<dimen name="action_button_min_width">64dip</dimen>
|
||||||
|
</resources>
|
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
/*
|
|
||||||
** Copyright 2011, The Android Open Source Project
|
|
||||||
**
|
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
** you may not use this file except in compliance with the License.
|
|
||||||
** You may obtain a copy of the License at
|
|
||||||
**
|
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
**
|
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
** See the License for the specific language governing permissions and
|
|
||||||
** limitations under the License.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
<resources>
|
|
||||||
<bool name="abs__action_bar_embed_tabs">true</bool>
|
|
||||||
<bool name="abs__split_action_bar_is_narrow">false</bool>
|
|
||||||
</resources>
|
|
@ -1,29 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
/*
|
|
||||||
** Copyright 2009, The Android Open Source Project
|
|
||||||
**
|
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
** you may not use this file except in compliance with the License.
|
|
||||||
** You may obtain a copy of the License at
|
|
||||||
**
|
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
**
|
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
** See the License for the specific language governing permissions and
|
|
||||||
** limitations under the License.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- These resources are around just to allow their values to be customized
|
|
||||||
for different hardware and product builds. -->
|
|
||||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
|
||||||
|
|
||||||
<!-- Whether action menu items should obey the "withText" showAsAction
|
|
||||||
flag. This may be set to false for situations where space is
|
|
||||||
extremely limited. -->
|
|
||||||
<bool name="abs__config_allowActionMenuItemTextWithIcon">true</bool>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -18,5 +18,12 @@
|
|||||||
*/
|
*/
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<integer name="abs__max_action_buttons">4</integer>
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the major axis (that is the screen is landscape). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_major">55%</item>
|
||||||
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the minor axis (that is the screen is portrait). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_minor">80%</item>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
/*
|
|
||||||
** Copyright 2011, The Android Open Source Project
|
|
||||||
**
|
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
** you may not use this file except in compliance with the License.
|
|
||||||
** You may obtain a copy of the License at
|
|
||||||
**
|
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
**
|
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
** See the License for the specific language governing permissions and
|
|
||||||
** limitations under the License.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
<resources>
|
|
||||||
<bool name="abs__action_bar_embed_tabs">true</bool>
|
|
||||||
<bool name="abs__split_action_bar_is_narrow">false</bool>
|
|
||||||
</resources>
|
|
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
<style name="Theme.SherlockBase" parent="android:Theme.Holo.NoActionBar"></style>
|
|
||||||
<style name="Theme.SherlockBase.Light" parent="android:Theme.Holo.Light.NoActionBar"></style>
|
|
||||||
</resources>
|
|
12
libs/ActionBarSherlock/res/values-v11/abs__themes.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<style name="Sherlock.__Theme" parent="android:Theme.Holo">
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.Light" parent="android:Theme.Holo.Light">
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
@ -1,6 +1,118 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
<style name="Theme.SherlockBase" parent="android:Theme.DeviceDefault.NoActionBar"></style>
|
<style name="Widget.Sherlock.ActionBar" parent="android:Widget.Holo.ActionBar">
|
||||||
<style name="Theme.SherlockBase.Light" parent="android:Theme.DeviceDefault.Light.NoActionBar"></style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ActionBar.Solid" parent="android:Widget.Holo.ActionBar.Solid">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar" parent="android:Widget.Holo.Light.ActionBar">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.Solid" parent="android:Widget.Holo.Light.ActionBar.Solid">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.Solid.Inverse" parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionBar.TabView" parent="android:Widget.Holo.ActionBar.TabView">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabView" parent="android:Widget.Holo.Light.ActionBar.TabView">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabView.Inverse" parent="android:Widget.Holo.Light.ActionBar.TabView.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionBar.TabBar" parent="android:Widget.Holo.ActionBar.TabBar">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabBar" parent="android:Widget.Holo.Light.ActionBar.TabBar">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabBar.Inverse" parent="android:Widget.Holo.Light.ActionBar.TabBar.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionBar.TabText" parent="android:Widget.Holo.ActionBar.TabText">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabText" parent="android:Widget.Holo.Light.ActionBar.TabText">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabText.Inverse" parent="android:Widget.Holo.Light.ActionBar.TabText.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionButton" parent="android:Widget.Holo.ActionButton">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton" parent="android:Widget.Holo.Light.ActionButton">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionButton.CloseMode" parent="android:Widget.Holo.ActionButton.CloseMode">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton.CloseMode" parent="android:Widget.Holo.Light.ActionButton.CloseMode">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionButton.Overflow" parent="android:Widget.Holo.ActionButton.Overflow">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton.Overflow" parent="android:Widget.Holo.Light.ActionButton.Overflow">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ActionMode" parent="android:Widget.Holo.ActionMode">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionMode" parent="android:Widget.Holo.Light.ActionMode">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionMode.Inverse" parent="android:Widget.Holo.Light.ActionMode.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.PopupMenu" parent="android:Widget.Holo.PopupMenu">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.PopupMenu" parent="android:Widget.Holo.Light.PopupMenu">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.Spinner.DropDown.ActionBar" parent="android:Widget.Holo.Spinner">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.Spinner.DropDown.ActionBar" parent="android:Widget.Holo.Light.Spinner">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ListView.DropDown" parent="android:Widget.Holo.ListView.DropDown">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ListView.DropDown" parent="android:Widget.Holo.Light.ListView.DropDown">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.PopupWindow.ActionMode" parent="android:Widget.Holo.PopupWindow">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.PopupWindow.ActionMode" parent="android:Widget.Holo.Light.PopupWindow">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ProgressBar" parent="android:Widget.Holo.ProgressBar">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ProgressBar" parent="android:Widget.Holo.Light.ProgressBar">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ProgressBar.Horizontal" parent="android:Widget.Holo.ProgressBar.Horizontal">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ProgressBar.Horizontal" parent="android:Widget.Holo.Light.ProgressBar.Horizontal">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="android:TextAppearance.Holo.Widget.ActionBar.Menu">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Title" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Title.Inverse" parent="android:TextAppearance.Holo.Widget.ActionBar.Title.Inverse">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Subtitle" parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Subtitle.Inverse" parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Title" parent="android:TextAppearance.Holo.Widget.ActionMode.Title">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Title.Inverse" parent="android:TextAppearance.Holo.Widget.ActionMode.Title.Inverse">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Subtitle" parent="android:TextAppearance.Holo.Widget.ActionMode.Subtitle">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Subtitle.Inverse" parent="android:TextAppearance.Holo.Widget.ActionMode.Subtitle.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu" parent="android:TextAppearance.Holo.Widget.PopupMenu">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Large" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.Widget.PopupMenu.Large" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Small" parent="android:TextAppearance.Holo.Widget.PopupMenu.Small">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.Widget.PopupMenu.Small" parent="android:TextAppearance.Holo.Widget.PopupMenu.Small">
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
28
libs/ActionBarSherlock/res/values-v14/abs__themes.xml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<style name="Sherlock.__Theme" parent="android:Theme.Holo">
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.Light" parent="android:Theme.Holo.Light">
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.DarkActionBar" parent="android:Theme.Holo.Light.DarkActionBar">
|
||||||
|
<!-- Useful for offsetting contents with an overlay action bar. -->
|
||||||
|
<item name="actionBarSize">?android:attr/actionBarSize</item>
|
||||||
|
<!-- Needed for our bug-fix dropdown list navigation layout. :( -->
|
||||||
|
<item name="dropdownListPreferredItemHeight">48dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock.NoActionBar">
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.NoActionBar">
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock.Dialog" parent="android:Theme.Holo.Dialog">
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Holo.Light.Dialog">
|
||||||
|
</style>
|
||||||
|
</resources>
|
@ -30,9 +30,16 @@
|
|||||||
<dimen name="abs__action_bar_subtitle_top_margin">-3dp</dimen>
|
<dimen name="abs__action_bar_subtitle_top_margin">-3dp</dimen>
|
||||||
<!-- Bottom margin for action bar subtitles -->
|
<!-- Bottom margin for action bar subtitles -->
|
||||||
<dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen>
|
<dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen>
|
||||||
|
|
||||||
<integer name="abs__max_action_buttons">5</integer>
|
|
||||||
|
|
||||||
<!-- Minimum width for an action button in the menu area of an action bar -->
|
<!-- Minimum width for an action button in the menu area of an action bar -->
|
||||||
<dimen name="action_button_min_width">64dip</dimen>
|
<dimen name="abs__action_button_min_width">64dip</dimen>
|
||||||
|
|
||||||
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the major axis (that is the screen is landscape). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_major">45%</item>
|
||||||
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the minor axis (that is the screen is portrait). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_minor">72%</item>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<attr name="titleTextStyle" format="reference" />
|
<attr name="titleTextStyle" format="reference" />
|
||||||
<attr name="subtitleTextStyle" format="reference" />
|
<attr name="subtitleTextStyle" format="reference" />
|
||||||
<attr name="background" format="reference" />
|
<attr name="background" format="reference|color" />
|
||||||
<attr name="backgroundSplit" format="reference" />
|
<attr name="backgroundSplit" format="reference|color" />
|
||||||
<attr name="height" format="dimension" />
|
<attr name="height" format="dimension" />
|
||||||
<attr name="divider" format="reference" />
|
<attr name="divider" format="reference" />
|
||||||
|
|
||||||
<declare-styleable name="SherlockTheme">
|
<declare-styleable name="SherlockTheme">
|
||||||
<!-- =================== -->
|
<!-- =================== -->
|
||||||
<!-- Action bar styles -->
|
<!-- Action bar styles -->
|
||||||
@ -60,6 +60,8 @@
|
|||||||
<attr name="actionModeSplitBackground" format="reference" />
|
<attr name="actionModeSplitBackground" format="reference" />
|
||||||
<!-- Drawable to use for the close action mode button -->
|
<!-- Drawable to use for the close action mode button -->
|
||||||
<attr name="actionModeCloseDrawable" format="reference" />
|
<attr name="actionModeCloseDrawable" format="reference" />
|
||||||
|
<!-- Drawable to use for the Share action button in WebView selection action modes -->
|
||||||
|
<attr name="actionModeShareDrawable" format="reference" />
|
||||||
|
|
||||||
<!-- PopupWindow style to use for action modes when showing as a window overlay. -->
|
<!-- PopupWindow style to use for action modes when showing as a window overlay. -->
|
||||||
<attr name="actionModePopupWindowStyle" format="reference" />
|
<attr name="actionModePopupWindowStyle" format="reference" />
|
||||||
@ -71,9 +73,9 @@
|
|||||||
|
|
||||||
<!-- Small Button style. -->
|
<!-- Small Button style. -->
|
||||||
<attr name="buttonStyleSmall" format="reference" />
|
<attr name="buttonStyleSmall" format="reference" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- This Drawable is overlaid over the foreground of the Window's content area, usually
|
<!-- This Drawable is overlaid over the foreground of the Window's content area, usually
|
||||||
to place a shadow below the title. -->
|
to place a shadow below the title. -->
|
||||||
<attr name="windowContentOverlay" format="reference" />
|
<attr name="windowContentOverlay" format="reference" />
|
||||||
@ -83,20 +85,23 @@
|
|||||||
|
|
||||||
<!-- Text color, typeface, size, and style for small text inside of a popup menu. -->
|
<!-- Text color, typeface, size, and style for small text inside of a popup menu. -->
|
||||||
<attr name="textAppearanceSmallPopupMenu" format="reference" />
|
<attr name="textAppearanceSmallPopupMenu" format="reference" />
|
||||||
|
|
||||||
|
|
||||||
<!-- Text color, typeface, size, and style for "small" text. Defaults to secondary text color. -->
|
<!-- Text color, typeface, size, and style for "small" text. Defaults to secondary text color. -->
|
||||||
<attr name="textAppearanceSmall" format="reference" />
|
<attr name="textAppearanceSmall" format="reference" />
|
||||||
|
|
||||||
<attr name="textColorPrimary" format="color" />
|
<attr name="textColorPrimary" format="color" />
|
||||||
|
<attr name="textColorPrimaryDisableOnly" format="color" />
|
||||||
|
<attr name="textColorPrimaryInverse" format="color" />
|
||||||
|
|
||||||
|
<attr name="spinnerItemStyle" format="reference" />
|
||||||
|
<attr name="spinnerDropDownItemStyle" format="reference" />
|
||||||
|
|
||||||
<!-- =========== -->
|
<!-- =========== -->
|
||||||
<!-- List styles -->
|
<!-- List styles -->
|
||||||
<!-- =========== -->
|
<!-- =========== -->
|
||||||
<eat-comment />
|
<eat-comment />
|
||||||
|
|
||||||
<!-- A smaller, sleeker list item height. -->
|
<!-- A smaller, sleeker list item height. -->
|
||||||
<attr name="listPreferredItemHeightSmall" format="dimension" />
|
<attr name="listPreferredItemHeightSmall" format="dimension" />
|
||||||
|
|
||||||
@ -104,16 +109,19 @@
|
|||||||
<attr name="listPreferredItemPaddingLeft" format="dimension" />
|
<attr name="listPreferredItemPaddingLeft" format="dimension" />
|
||||||
<!-- The preferred padding along the right edge of list items. -->
|
<!-- The preferred padding along the right edge of list items. -->
|
||||||
<attr name="listPreferredItemPaddingRight" format="dimension" />
|
<attr name="listPreferredItemPaddingRight" format="dimension" />
|
||||||
|
|
||||||
<!-- The preferred TextAppearance for the primary text of small list items. -->
|
<!-- The preferred TextAppearance for the primary text of small list items. -->
|
||||||
<attr name="textAppearanceListItemSmall" format="reference" />
|
<attr name="textAppearanceListItemSmall" format="reference" />
|
||||||
|
|
||||||
|
|
||||||
|
<attr name="windowMinWidthMajor" format="dimension" />
|
||||||
|
<attr name="windowMinWidthMinor" format="dimension" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Drawable to use for generic vertical dividers. -->
|
<!-- Drawable to use for generic vertical dividers. -->
|
||||||
<attr name="dividerVertical" format="reference" />
|
<attr name="dividerVertical" format="reference" />
|
||||||
|
|
||||||
<attr name="actionDropDownStyle" format="reference" />
|
<attr name="actionDropDownStyle" format="reference" />
|
||||||
<attr name="actionButtonStyle" format="reference" />
|
<attr name="actionButtonStyle" format="reference" />
|
||||||
<attr name="homeAsUpIndicator" format="reference" />
|
<attr name="homeAsUpIndicator" format="reference" />
|
||||||
@ -126,11 +134,22 @@
|
|||||||
<attr name="windowActionBarOverlay" format="boolean"/>
|
<attr name="windowActionBarOverlay" format="boolean"/>
|
||||||
<attr name="windowActionModeOverlay" format="boolean"/>
|
<attr name="windowActionModeOverlay" format="boolean"/>
|
||||||
<attr name="windowSplitActionBar" format="boolean" />
|
<attr name="windowSplitActionBar" format="boolean" />
|
||||||
|
|
||||||
|
|
||||||
|
<attr name="listPopupWindowStyle" format="reference" />
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Default ActivityChooserView style. -->
|
||||||
|
<attr name="activityChooserViewStyle" format="reference" />
|
||||||
|
<!-- Drawable used as a background for activated items. -->
|
||||||
|
<attr name="activatedBackgroundIndicator" format="reference" />
|
||||||
|
|
||||||
<!-- Specified if we are forcing an action item overflow menu. -->
|
<!-- Specified if we are forcing an action item overflow menu. -->
|
||||||
<attr name="absForceOverflow" format="boolean" />
|
<attr name="absForceOverflow" format="boolean" />
|
||||||
|
|
||||||
|
<attr name="android:windowIsFloating" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
|
||||||
<!-- Attributes used to style the Action Bar. -->
|
<!-- Attributes used to style the Action Bar. -->
|
||||||
<declare-styleable name="SherlockActionBar">
|
<declare-styleable name="SherlockActionBar">
|
||||||
@ -188,7 +207,7 @@
|
|||||||
system-provided items in the bar. -->
|
system-provided items in the bar. -->
|
||||||
<attr name="itemPadding" format="dimension" />
|
<attr name="itemPadding" format="dimension" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
|
||||||
<declare-styleable name="SherlockActionMode">
|
<declare-styleable name="SherlockActionMode">
|
||||||
<!-- Specifies a style to use for title text. -->
|
<!-- Specifies a style to use for title text. -->
|
||||||
@ -202,7 +221,7 @@
|
|||||||
<!-- Specifies a fixed height for the action mode bar. -->
|
<!-- Specifies a fixed height for the action mode bar. -->
|
||||||
<attr name="height" />
|
<attr name="height" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
<declare-styleable name="SherlockMenuView">
|
<declare-styleable name="SherlockMenuView">
|
||||||
<!-- Default appearance of menu item text. -->
|
<!-- Default appearance of menu item text. -->
|
||||||
<attr name="itemTextAppearance" format="reference" />
|
<attr name="itemTextAppearance" format="reference" />
|
||||||
@ -221,4 +240,141 @@
|
|||||||
<!-- Whether space should be reserved in layout when an icon is missing. -->
|
<!-- Whether space should be reserved in layout when an icon is missing. -->
|
||||||
<attr name="preserveIconSpacing" format="boolean" />
|
<attr name="preserveIconSpacing" format="boolean" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="SherlockActionMenuItemView">
|
||||||
|
<attr name="android:minWidth" />
|
||||||
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="SherlockActivityChooserView">
|
||||||
|
<!-- The maximal number of items initially shown in the activity list. -->
|
||||||
|
<attr name="initialActivityCount" format="string" />
|
||||||
|
<!-- The drawable to show in the button for expanding the activities overflow popup.
|
||||||
|
<strong>Note:</strong> Clients would like to set this drawable
|
||||||
|
as a clue about the action the chosen activity will perform. For
|
||||||
|
example, if share activity is to be chosen the drawable should
|
||||||
|
give a clue that sharing is to be performed.
|
||||||
|
-->
|
||||||
|
<attr name="expandActivityOverflowButtonDrawable" format="reference" />
|
||||||
|
|
||||||
|
<attr name="android:background" />
|
||||||
|
</declare-styleable>
|
||||||
|
|
||||||
|
<!-- Base attributes that are available to all groups. -->
|
||||||
|
<declare-styleable name="SherlockMenuGroup">
|
||||||
|
|
||||||
|
<!-- The ID of the group. -->
|
||||||
|
<attr name="android:id" />
|
||||||
|
|
||||||
|
<!-- The category applied to all items within this group.
|
||||||
|
(This will be or'ed with the orderInCategory attribute.) -->
|
||||||
|
<attr name="android:menuCategory" />
|
||||||
|
|
||||||
|
<!-- The order within the category applied to all items within this group.
|
||||||
|
(This will be or'ed with the category attribute.) -->
|
||||||
|
<attr name="android:orderInCategory" />
|
||||||
|
|
||||||
|
<!-- Whether the items are capable of displaying a check mark. -->
|
||||||
|
<attr name="android:checkableBehavior" />
|
||||||
|
|
||||||
|
<!-- Whether the items are shown/visible. -->
|
||||||
|
<attr name="android:visible" />
|
||||||
|
|
||||||
|
<!-- Whether the items are enabled. -->
|
||||||
|
<attr name="android:enabled" />
|
||||||
|
|
||||||
|
</declare-styleable>
|
||||||
|
|
||||||
|
<!-- Base attributes that are available to all Item objects. -->
|
||||||
|
<declare-styleable name="SherlockMenuItem">
|
||||||
|
|
||||||
|
<!-- The ID of the item. -->
|
||||||
|
<attr name="android:id" />
|
||||||
|
|
||||||
|
<!-- The category applied to the item.
|
||||||
|
(This will be or'ed with the orderInCategory attribute.) -->
|
||||||
|
<attr name="android:menuCategory" />
|
||||||
|
|
||||||
|
<!-- The order within the category applied to the item.
|
||||||
|
(This will be or'ed with the category attribute.) -->
|
||||||
|
<attr name="android:orderInCategory" />
|
||||||
|
|
||||||
|
<!-- The title associated with the item. -->
|
||||||
|
<attr name="android:title" />
|
||||||
|
|
||||||
|
<!-- The condensed title associated with the item. This is used in situations where the
|
||||||
|
normal title may be too long to be displayed. -->
|
||||||
|
<attr name="android:titleCondensed" />
|
||||||
|
|
||||||
|
<!-- The icon associated with this item. This icon will not always be shown, so
|
||||||
|
the title should be sufficient in describing this item. -->
|
||||||
|
<attr name="android:icon" />
|
||||||
|
|
||||||
|
<!-- The alphabetic shortcut key. This is the shortcut when using a keyboard
|
||||||
|
with alphabetic keys. -->
|
||||||
|
<attr name="android:alphabeticShortcut" />
|
||||||
|
|
||||||
|
<!-- The numeric shortcut key. This is the shortcut when using a numeric (e.g., 12-key)
|
||||||
|
keyboard. -->
|
||||||
|
<attr name="android:numericShortcut" />
|
||||||
|
|
||||||
|
<!-- Whether the item is capable of displaying a check mark. -->
|
||||||
|
<attr name="android:checkable" />
|
||||||
|
|
||||||
|
<!-- Whether the item is checked. Note that you must first have enabled checking with
|
||||||
|
the checkable attribute or else the check mark will not appear. -->
|
||||||
|
<attr name="android:checked" />
|
||||||
|
|
||||||
|
<!-- Whether the item is shown/visible. -->
|
||||||
|
<attr name="android:visible" />
|
||||||
|
|
||||||
|
<!-- Whether the item is enabled. -->
|
||||||
|
<attr name="android:enabled" />
|
||||||
|
|
||||||
|
<!-- Name of a method on the Context used to inflate the menu that will be
|
||||||
|
called when the item is clicked. -->
|
||||||
|
<attr name="android:onClick" />
|
||||||
|
|
||||||
|
<!-- How this item should display in the Action Bar, if present. -->
|
||||||
|
<attr name="android:showAsAction" />
|
||||||
|
|
||||||
|
<!-- An optional layout to be used as an action view.
|
||||||
|
See {@link android.view.MenuItem#setActionView(android.view.View)}
|
||||||
|
for more info. -->
|
||||||
|
<attr name="android:actionLayout" />
|
||||||
|
|
||||||
|
<!-- The name of an optional View class to instantiate and use as an
|
||||||
|
action view. See {@link android.view.MenuItem#setActionView(android.view.View)}
|
||||||
|
for more info. -->
|
||||||
|
<attr name="android:actionViewClass" />
|
||||||
|
|
||||||
|
<!-- The name of an optional ActionProvider class to instantiate an action view
|
||||||
|
and perform operations such as default action for that menu item.
|
||||||
|
See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)}
|
||||||
|
for more info. -->
|
||||||
|
<attr name="android:actionProviderClass" />
|
||||||
|
|
||||||
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="SherlockSpinner">
|
||||||
|
<!-- The prompt to display when the spinner's dialog is shown. -->
|
||||||
|
<attr name="android:prompt" />
|
||||||
|
<!-- List selector to use for spinnerMode="dropdown" display. -->
|
||||||
|
<attr name="android:dropDownSelector" />
|
||||||
|
<!-- Background drawable to use for the dropdown in spinnerMode="dropdown". -->
|
||||||
|
<attr name="android:popupBackground" />
|
||||||
|
<!-- Vertical offset from the spinner widget for positioning the dropdown in
|
||||||
|
spinnerMode="dropdown". -->
|
||||||
|
<attr name="android:dropDownVerticalOffset" />
|
||||||
|
<!-- Horizontal offset from the spinner widget for positioning the dropdown
|
||||||
|
in spinnerMode="dropdown". -->
|
||||||
|
<attr name="android:dropDownHorizontalOffset" />
|
||||||
|
<!-- Width of the dropdown in spinnerMode="dropdown". -->
|
||||||
|
<attr name="android:dropDownWidth" />
|
||||||
|
<!-- Reference to a layout to use for displaying a prompt in the dropdown for
|
||||||
|
spinnerMode="dropdown". This layout must contain a TextView with the id
|
||||||
|
@android:id/text1 to be populated with the prompt text. -->
|
||||||
|
<attr name="android:popupPromptView" />
|
||||||
|
<!-- Gravity setting for positioning the currently selected item. -->
|
||||||
|
<attr name="android:gravity" />
|
||||||
|
</declare-styleable>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -23,4 +23,5 @@
|
|||||||
<color name="abs__bright_foreground_disabled_holo_light">#ffb2b2b2</color>
|
<color name="abs__bright_foreground_disabled_holo_light">#ffb2b2b2</color>
|
||||||
<color name="abs__bright_foreground_inverse_holo_dark">@color/abs__bright_foreground_holo_light</color>
|
<color name="abs__bright_foreground_inverse_holo_dark">@color/abs__bright_foreground_holo_light</color>
|
||||||
<color name="abs__bright_foreground_inverse_holo_light">@color/abs__bright_foreground_holo_dark</color>
|
<color name="abs__bright_foreground_inverse_holo_light">@color/abs__bright_foreground_holo_dark</color>
|
||||||
|
<color name="abs__holo_blue_light">#ff33b5e5</color>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -35,4 +35,16 @@
|
|||||||
|
|
||||||
<!-- Minimum width for an action button in the menu area of an action bar -->
|
<!-- Minimum width for an action button in the menu area of an action bar -->
|
||||||
<dimen name="abs__action_button_min_width">56dip</dimen>
|
<dimen name="abs__action_button_min_width">56dip</dimen>
|
||||||
|
|
||||||
|
<!-- Dialog title height -->
|
||||||
|
<dimen name="abs__alert_dialog_title_height">64dip</dimen>
|
||||||
|
|
||||||
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the major axis (that is the screen is landscape). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_major">65%</item>
|
||||||
|
<!-- The platform's desired minimum size for a dialog's width when it
|
||||||
|
is along the minor axis (that is the screen is portrait). This may
|
||||||
|
be either a fraction or a dimension. -->
|
||||||
|
<item type="dimen" name="abs__dialog_min_width_minor">95%</item>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -16,11 +16,27 @@
|
|||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
<!-- Content description for the action bar "home" affordance. [CHAR LIMIT=NONE] -->
|
<!-- Content description for the action bar "home" affordance. [CHAR LIMIT=NONE] -->
|
||||||
<string name="abs__action_bar_home_description">Navigate home</string>
|
<string name="abs__action_bar_home_description">Navigate home</string>
|
||||||
<!-- Content description for the action bar "up" affordance. [CHAR LIMIT=NONE] -->
|
<!-- Content description for the action bar "up" affordance. [CHAR LIMIT=NONE] -->
|
||||||
<string name="abs__action_bar_up_description">Navigate up</string>
|
<string name="abs__action_bar_up_description">Navigate up</string>
|
||||||
<!-- Content description for the action menu overflow button. [CHAR LIMIT=NONE] -->
|
<!-- Content description for the action menu overflow button. [CHAR LIMIT=NONE] -->
|
||||||
<string name="abs__action_menu_overflow_description">More options</string>
|
<string name="abs__action_menu_overflow_description">More options</string>
|
||||||
|
|
||||||
|
<!-- Label for the "Done" button on the far left of action mode toolbars. -->
|
||||||
|
<string name="abs__action_mode_done">Done</string>
|
||||||
|
|
||||||
|
<!-- Title for a button to expand the list of activities in ActivityChooserView [CHAR LIMIT=25] -->
|
||||||
|
<string name="abs__activity_chooser_view_see_all">See all...</string>
|
||||||
|
<!-- Title default for a dialog showing possible activities in ActivityChooserView [CHAR LIMIT=25] -->
|
||||||
|
<string name="abs__activity_chooser_view_dialog_title_default">Select activity</string>
|
||||||
|
<!-- Title for a dialog showing possible activities for sharing in ShareActionProvider [CHAR LIMIT=25] -->
|
||||||
|
<string name="abs__share_action_provider_share_with">Share with...</string>
|
||||||
|
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="abs__activitychooserview_choose_application">Choose an application</string>
|
||||||
|
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="abs__shareactionprovider_share_with">Share with</string>
|
||||||
|
<!-- Description of a share target (both in the list of such or the default share button) in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="abs__shareactionprovider_share_with_application">Share with <xliff:g id="application_name" example="Bluetooth">%s</xliff:g></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,59 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
<style name="Theme.SherlockBase" parent="android:Theme.NoTitleBar"></style>
|
<style name="Widget">
|
||||||
<style name="Theme.SherlockBase.Light" parent="android:Theme.Light.NoTitleBar"></style>
|
|
||||||
|
|
||||||
<style name="Theme.Sherlock" parent="Theme.SherlockBase">
|
|
||||||
<!-- Action bar styles (from Theme.Holo) -->
|
|
||||||
<item name="actionDropDownStyle">@style/Widget.Sherlock.Spinner.DropDown.ActionBar</item>
|
|
||||||
<item name="actionButtonStyle">@style/Widget.Sherlock.ActionButton</item>
|
|
||||||
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.ActionButton.Overflow</item>
|
|
||||||
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_dark</item>
|
|
||||||
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item>
|
|
||||||
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_dark</item>
|
|
||||||
<item name="actionBarTabStyle">@style/Widget.Sherlock.ActionBar.TabView</item>
|
|
||||||
<item name="actionBarTabBarStyle">@style/Widget.Sherlock.ActionBar.TabBar</item>
|
|
||||||
<item name="actionBarTabTextStyle">@style/Widget.Sherlock.ActionBar.TabText</item>
|
|
||||||
<item name="actionModeStyle">@style/Widget.Sherlock.ActionMode</item>
|
|
||||||
<item name="actionModeCloseButtonStyle">@style/Widget.Sherlock.ActionButton.CloseMode</item>
|
|
||||||
<item name="actionBarStyle">@style/Widget.Sherlock.ActionBar</item>
|
|
||||||
<item name="actionBarSize">@dimen/abs__action_bar_default_height</item>
|
|
||||||
<item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item>
|
|
||||||
<item name="actionBarWidgetTheme">@null</item>
|
|
||||||
|
|
||||||
<!-- Action bar styles (defaults from Theme) -->
|
|
||||||
<item name="actionBarSplitStyle">?attr/actionBarStyle</item>
|
|
||||||
<item name="actionMenuTextAppearance">@style/TextAppearance.Sherlock.Widget.ActionBar.Menu</item>
|
|
||||||
<item name="actionMenuTextColor">?attr/textColorPrimary</item>
|
|
||||||
<item name="actionBarDivider">?attr/dividerVertical</item>
|
|
||||||
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_dark</item>
|
|
||||||
|
|
||||||
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item>
|
|
||||||
|
|
||||||
<item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item>
|
|
||||||
|
|
||||||
<item name="textColorPrimary">@color/abs__primary_text_holo_dark</item>
|
|
||||||
|
|
||||||
<item name="dropdownListPreferredItemHeight">48dip</item>
|
|
||||||
<item name="dropDownListViewStyle">@style/Widget.Sherlock.ListView.DropDown</item>
|
|
||||||
|
|
||||||
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Large</item>
|
|
||||||
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Small</item>
|
|
||||||
|
|
||||||
<item name="popupMenuStyle">@style/Widget.Sherlock.PopupMenu</item>
|
|
||||||
|
|
||||||
<item name="windowActionBar">true</item>
|
|
||||||
<item name="windowActionModeOverlay">false</item>
|
|
||||||
<item name="windowContentOverlay">@null</item>
|
|
||||||
</style>
|
|
||||||
<style name="Theme.Sherlock.ForceOverflow">
|
|
||||||
<item name="absForceOverflow">true</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget"></style>
|
<style name="Sherlock.__Widget.ActionBar" parent="Widget">
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionBar" parent="Widget">
|
|
||||||
<item name="displayOptions">useLogo|showHome|showTitle</item>
|
<item name="displayOptions">useLogo|showHome|showTitle</item>
|
||||||
<item name="height">?attr/actionBarSize</item>
|
<item name="height">?attr/actionBarSize</item>
|
||||||
<item name="android:paddingLeft">0dip</item>
|
<item name="android:paddingLeft">0dip</item>
|
||||||
@ -61,7 +12,8 @@
|
|||||||
<item name="android:paddingRight">0dip</item>
|
<item name="android:paddingRight">0dip</item>
|
||||||
<item name="android:paddingBottom">0dip</item>
|
<item name="android:paddingBottom">0dip</item>
|
||||||
<item name="homeLayout">@layout/abs__action_bar_home</item>
|
<item name="homeLayout">@layout/abs__action_bar_home</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ActionBar" parent="Sherlock.__Widget.ActionBar">
|
||||||
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title</item>
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title</item>
|
||||||
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle</item>
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle</item>
|
||||||
<item name="background">@drawable/abs__ab_transparent_dark_holo</item>
|
<item name="background">@drawable/abs__ab_transparent_dark_holo</item>
|
||||||
@ -73,19 +25,76 @@
|
|||||||
<item name="progressBarPadding">32dip</item>
|
<item name="progressBarPadding">32dip</item>
|
||||||
<item name="itemPadding">8dip</item>
|
<item name="itemPadding">8dip</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ActionBar.Solid" parent="Sherlock.__Widget.ActionBar">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title</item>
|
||||||
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle</item>
|
||||||
|
<item name="background">@drawable/abs__ab_solid_dark_holo</item>
|
||||||
|
<item name="backgroundStacked">@drawable/abs__ab_stacked_solid_dark_holo</item>
|
||||||
|
<item name="backgroundSplit">@drawable/abs__ab_bottom_solid_dark_holo</item>
|
||||||
|
<item name="divider">?attr/dividerVertical</item>
|
||||||
|
<item name="progressBarStyle">@style/Widget.Sherlock.ProgressBar.Horizontal</item>
|
||||||
|
<item name="indeterminateProgressStyle">@style/Widget.Sherlock.ProgressBar</item>
|
||||||
|
<item name="progressBarPadding">32dip</item>
|
||||||
|
<item name="itemPadding">8dip</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar" parent="Widget.Sherlock.ActionBar">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title</item>
|
||||||
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle</item>
|
||||||
|
<item name="background">@drawable/abs__ab_transparent_light_holo</item>
|
||||||
|
<item name="backgroundStacked">@drawable/abs__ab_stacked_transparent_light_holo</item>
|
||||||
|
<item name="backgroundSplit">@drawable/abs__ab_bottom_transparent_light_holo</item>
|
||||||
|
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_light</item>
|
||||||
|
<item name="progressBarStyle">@style/Widget.Sherlock.Light.ProgressBar.Horizontal</item>
|
||||||
|
<item name="indeterminateProgressStyle">@style/Widget.Sherlock.Light.ProgressBar</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.Solid">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title</item>
|
||||||
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle</item>
|
||||||
|
<item name="background">@drawable/abs__ab_solid_light_holo</item>
|
||||||
|
<item name="backgroundStacked">@drawable/abs__ab_stacked_solid_light_holo</item>
|
||||||
|
<item name="backgroundSplit">@drawable/abs__ab_bottom_solid_light_holo</item>
|
||||||
|
<item name="divider">?attr/dividerVertical</item>
|
||||||
|
<item name="progressBarStyle">@style/Widget.Sherlock.Light.ProgressBar.Horizontal</item>
|
||||||
|
<item name="indeterminateProgressStyle">@style/Widget.Sherlock.Light.ProgressBar</item>
|
||||||
|
<item name="progressBarPadding">32dip</item>
|
||||||
|
<item name="itemPadding">8dip</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Title.Inverse</item>
|
||||||
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionBar.Subtitle.Inverse</item>
|
||||||
|
<item name="background">@drawable/abs__ab_solid_dark_holo</item>
|
||||||
|
<item name="backgroundStacked">@drawable/abs__ab_stacked_solid_dark_holo</item>
|
||||||
|
<item name="backgroundSplit">@drawable/abs__ab_bottom_solid_inverse_holo</item>
|
||||||
|
<item name="divider">@drawable/abs__list_divider_holo_dark</item>
|
||||||
|
<item name="progressBarStyle">@style/Widget.Sherlock.ProgressBar.Horizontal</item>
|
||||||
|
<item name="indeterminateProgressStyle">@style/Widget.Sherlock.ProgressBar</item>
|
||||||
|
<item name="progressBarPadding">32dip</item>
|
||||||
|
<item name="itemPadding">8dip</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionBar.TabView" parent="Widget">
|
<style name="Widget.Sherlock.ActionBar.TabView" parent="Widget">
|
||||||
<item name="android:gravity">center_horizontal</item>
|
<item name="android:gravity">center_horizontal</item>
|
||||||
<item name="android:background">@drawable/abs__tab_indicator_holo</item>
|
<item name="android:background">@drawable/abs__tab_indicator_holo</item>
|
||||||
<item name="android:paddingLeft">16dip</item>
|
<item name="android:paddingLeft">16dip</item>
|
||||||
<item name="android:paddingRight">16dip</item>
|
<item name="android:paddingRight">16dip</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabView" parent="Widget.Sherlock.ActionBar.TabView">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabView.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionBar.TabBar" parent="Widget">
|
<style name="Widget.Sherlock.ActionBar.TabBar" parent="Widget">
|
||||||
<item name="android:divider">?attr/actionBarDivider</item>
|
<item name="android:divider">?attr/actionBarDivider</item>
|
||||||
<item name="android:showDividers">middle</item>
|
<item name="android:showDividers">middle</item>
|
||||||
<item name="android:dividerPadding">12dip</item>
|
<item name="android:dividerPadding">12dip</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabBar" parent="Widget.Sherlock.ActionBar.TabBar">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabBar.Inverse">
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionBar.TabText" parent="Widget">
|
<style name="Widget.Sherlock.ActionBar.TabText" parent="Widget">
|
||||||
<item name="android:textAppearance">@style/TextAppearance.Sherlock.Medium</item>
|
<item name="android:textAppearance">@null</item>
|
||||||
<item name="android:textColor">?attr/textColorPrimary</item>
|
<item name="android:textColor">?attr/textColorPrimary</item>
|
||||||
<item name="android:textSize">12sp</item>
|
<item name="android:textSize">12sp</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
@ -93,70 +102,153 @@
|
|||||||
<item name="android:ellipsize">marquee</item>
|
<item name="android:ellipsize">marquee</item>
|
||||||
<item name="android:maxLines">2</item>
|
<item name="android:maxLines">2</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabText" parent="Widget.Sherlock.ActionBar.TabText">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionBar.TabText.Inverse">
|
||||||
|
<item name="android:textColor">?attr/textColorPrimaryInverse</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionButton" parent="Widget">
|
<style name="Widget.Sherlock.ActionButton" parent="Widget">
|
||||||
<item name="android:background">?attr/actionBarItemBackground</item>
|
<item name="android:background">?attr/actionBarItemBackground</item>
|
||||||
<item name="android:minHeight">?attr/actionBarSize</item>
|
<item name="android:minHeight">?attr/actionBarSize</item>
|
||||||
|
|
||||||
<item name="android:minWidth">56dip</item>
|
<item name="android:minWidth">56dip</item>
|
||||||
<item name="android:gravity">center</item>
|
<item name="android:gravity">center</item>
|
||||||
<item name="android:paddingLeft">12dip</item>
|
<item name="android:paddingLeft">12dip</item>
|
||||||
<item name="android:paddingRight">12dip</item>
|
<item name="android:paddingRight">12dip</item>
|
||||||
<item name="android:scaleType">center</item>
|
<item name="android:scaleType">center</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton" parent="Widget.Sherlock.ActionButton">
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionButton.CloseMode">
|
<style name="Widget.Sherlock.ActionButton.CloseMode">
|
||||||
<item name="android:background">@drawable/abs__btn_cab_done_holo_dark</item>
|
<item name="android:background">@drawable/abs__btn_cab_done_holo_dark</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton.CloseMode">
|
||||||
|
<item name="android:background">@drawable/abs__btn_cab_done_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ActionButton.Overflow">
|
<style name="Widget.Sherlock.ActionButton.Overflow">
|
||||||
<item name="android:src">@drawable/abs__ic_menu_moreoverflow_holo_dark</item>
|
<item name="android:src">@drawable/abs__ic_menu_moreoverflow_holo_dark</item>
|
||||||
<item name="android:background">?attr/actionBarItemBackground</item>
|
<item name="android:background">?attr/actionBarItemBackground</item>
|
||||||
<item name="android:contentDescription">@string/abs__action_menu_overflow_description</item>
|
<item name="android:contentDescription">@string/abs__action_menu_overflow_description</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionButton.Overflow">
|
||||||
<style name="Widget.Sherlock.ActionMode" parent="Widget">
|
<item name="android:src">@drawable/abs__ic_menu_moreoverflow_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Sherlock.__Widget.ActionMode" parent="Widget">
|
||||||
<item name="background">?attr/actionModeBackground</item>
|
<item name="background">?attr/actionModeBackground</item>
|
||||||
<item name="backgroundSplit">?attr/actionModeSplitBackground</item>
|
<item name="backgroundSplit">?attr/actionModeSplitBackground</item>
|
||||||
<item name="height">?attr/actionBarSize</item>
|
<item name="height">?attr/actionBarSize</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ActionMode" parent="Sherlock.__Widget.ActionMode">
|
||||||
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Title</item>
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Title</item>
|
||||||
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Subtitle</item>
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Subtitle</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionMode" parent="Widget.Sherlock.ActionMode">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Title</item>
|
||||||
<style name="Widget.Sherlock.PopupMenu" parent="Widget">
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Subtitle</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActionMode.Inverse" parent="Sherlock.__Widget.ActionMode">
|
||||||
|
<item name="titleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Title.Inverse</item>
|
||||||
|
<item name="subtitleTextStyle">@style/TextAppearance.Sherlock.Widget.ActionMode.Subtitle.Inverse</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.ListPopupWindow" parent="Widget">
|
||||||
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_dark</item>
|
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_dark</item>
|
||||||
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_dark</item>
|
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_dark</item>
|
||||||
<item name="android:dropDownVerticalOffset">0dip</item>
|
<item name="android:dropDownVerticalOffset">0dip</item>
|
||||||
<item name="android:dropDownHorizontalOffset">0dip</item>
|
<item name="android:dropDownHorizontalOffset">0dip</item>
|
||||||
<item name="android:dropDownWidth">wrap_content</item>
|
<item name="android:dropDownWidth">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ListPopupWindow" parent="Widget">
|
||||||
|
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_light</item>
|
||||||
|
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_light</item>
|
||||||
|
<item name="android:dropDownVerticalOffset">0dip</item>
|
||||||
|
<item name="android:dropDownHorizontalOffset">0dip</item>
|
||||||
|
<item name="android:dropDownWidth">wrap_content</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.PopupMenu" parent="Widget.Sherlock.ListPopupWindow">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.PopupMenu" parent="Widget.Sherlock.Light.ListPopupWindow">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<style name="Widget.Sherlock.Spinner.DropDown.ActionBar" parent="Widget">
|
<style name="Sherlock.__Widget.ActivityChooserView" parent="Widget">
|
||||||
<!-- From Widget.Holo.Spinner.DropDown.ActionBar -->
|
<item name="android:gravity">center</item>
|
||||||
<item name="android:background">@drawable/abs__spinner_ab_holo_dark</item>
|
<item name="android:background">@drawable/abs__ab_share_pack_holo_dark</item>
|
||||||
<!-- From Widget.Holo.Spinner.DropDown -->
|
<item name="android:divider">?attr/dividerVertical</item>
|
||||||
|
<item name="android:showDividers">middle</item>
|
||||||
|
<item name="android:dividerPadding">6dip</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ActivityChooserView" parent="Sherlock.__Widget.ActivityChooserView">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ActivityChooserView" parent="Widget.Sherlock.ActivityChooserView">
|
||||||
|
<item name="android:background">@drawable/abs__ab_share_pack_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Sherlock.Button.Small" parent="Widget">
|
||||||
|
<item name="android:textAppearance">?attr/textAppearanceSmall</item>
|
||||||
|
<item name="android:textColor">@color/abs__primary_text_holo_dark</item>
|
||||||
|
<item name="android:minHeight">48dip</item>
|
||||||
|
<item name="android:minWidth">48dip</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.Button.Small" parent="Widget">
|
||||||
|
<item name="android:textAppearance">?attr/textAppearanceSmall</item>
|
||||||
|
<item name="android:textColor">@color/abs__primary_text_holo_light</item>
|
||||||
|
<item name="android:minHeight">48dip</item>
|
||||||
|
<item name="android:minWidth">48dip</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="Sherlock.__Widget.Holo.Spinner" parent="Widget">
|
||||||
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_dark</item>
|
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_dark</item>
|
||||||
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_dark</item>
|
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_dark</item>
|
||||||
<item name="android:dropDownVerticalOffset">0dip</item>
|
<item name="android:dropDownVerticalOffset">0dip</item>
|
||||||
<item name="android:dropDownHorizontalOffset">0dip</item>
|
<item name="android:dropDownHorizontalOffset">0dip</item>
|
||||||
<item name="android:dropDownWidth">wrap_content</item>
|
<item name="android:dropDownWidth">wrap_content</item>
|
||||||
<item name="android:gravity">left|center_vertical</item>
|
<item name="android:gravity">left|center_vertical</item>
|
||||||
<!-- From Widget.Holo.Spinner -->
|
|
||||||
<item name="android:spinnerMode">dropdown</item>
|
<item name="android:spinnerMode">dropdown</item>
|
||||||
<!-- From Widget.Spinner.DropDown -->
|
|
||||||
<item name="android:clickable">true</item>
|
<item name="android:clickable">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Spinner.DropDown.ActionBar" parent="Sherlock.__Widget.Holo.Spinner">
|
||||||
<style name="Widget.Sherlock.ListView.DropDown" parent="android:Widget.ListView">
|
<item name="android:background">@drawable/abs__spinner_ab_holo_dark</item>
|
||||||
<!-- From Widget.Holo.ListView.DropDown -->
|
</style>
|
||||||
<!-- From Widget.Holo.ListView -->
|
<style name="Widget.Sherlock.Light.Spinner.DropDown.ActionBar" parent="Sherlock.__Widget.Holo.Spinner">
|
||||||
|
<item name="android:background">@drawable/abs__spinner_ab_holo_light</item>
|
||||||
|
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_light</item>
|
||||||
|
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Sherlock.__Widget.Holo.ListView" parent="android:Widget.ListView">
|
||||||
<item name="android:divider">@drawable/abs__list_divider_holo_dark</item>
|
<item name="android:divider">@drawable/abs__list_divider_holo_dark</item>
|
||||||
<item name="android:listSelector">@drawable/abs__list_selector_holo_dark</item>
|
<item name="android:listSelector">@drawable/abs__list_selector_holo_dark</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.ListView.DropDown" parent="Sherlock.__Widget.Holo.ListView">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ListView.DropDown" parent="Sherlock.__Widget.Holo.ListView">
|
||||||
|
<item name="android:divider">@drawable/abs__list_divider_holo_light</item>
|
||||||
|
<item name="android:listSelector">@drawable/abs__list_selector_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Sherlock.__Widget.Holo.DropDownItem" parent="Widget">
|
||||||
|
<item name="android:textAppearance">@style/TextAppearance.Sherlock.Widget.DropDownItem</item>
|
||||||
|
<item name="android:paddingLeft">8dp</item>
|
||||||
|
<item name="android:paddingRight">8dp</item>
|
||||||
|
<item name="android:gravity">center_vertical</item>
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.DropDownItem.Spinner" parent="Sherlock.__Widget.Holo.DropDownItem">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.DropDownItem.Spinner" parent="Sherlock.__Widget.Holo.DropDownItem">
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.PopupWindow.ActionMode" parent="Widget"></style>
|
<style name="Widget.Sherlock.PopupWindow.ActionMode" parent="Widget">
|
||||||
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.PopupWindow.ActionMode" parent="Widget">
|
||||||
|
<item name="android:popupBackground">@android:color/white</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -164,6 +256,8 @@
|
|||||||
<item name="android:indeterminateDrawable">@drawable/abs__progress_medium_holo</item>
|
<item name="android:indeterminateDrawable">@drawable/abs__progress_medium_holo</item>
|
||||||
<item name="android:animationResolution">33</item>
|
<item name="android:animationResolution">33</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ProgressBar" parent="Widget.Sherlock.ProgressBar">
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Sherlock.ProgressBar.Horizontal" parent="android:Widget.ProgressBar.Horizontal">
|
<style name="Widget.Sherlock.ProgressBar.Horizontal" parent="android:Widget.ProgressBar.Horizontal">
|
||||||
<item name="android:progressDrawable">@drawable/abs__progress_horizontal_holo_dark</item>
|
<item name="android:progressDrawable">@drawable/abs__progress_horizontal_holo_dark</item>
|
||||||
@ -171,36 +265,120 @@
|
|||||||
<item name="android:minHeight">16dip</item>
|
<item name="android:minHeight">16dip</item>
|
||||||
<item name="android:maxHeight">16dip</item>
|
<item name="android:maxHeight">16dip</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="Widget.Sherlock.Light.ProgressBar.Horizontal" parent="Widget.Sherlock.ProgressBar.Horizontal">
|
||||||
|
<item name="android:progressDrawable">@drawable/abs__progress_horizontal_holo_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<style name="TextAppearance.Sherlock.Medium" parent="Widget"></style>
|
<style name="Widget.Sherlock.TextView.SpinnerItem" parent="Widget">
|
||||||
<style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="Widget"></style>
|
<item name="android:textAppearance">@style/TextAppearance.Sherlock.Widget.TextView.SpinnerItem</item>
|
||||||
|
<item name="android:paddingLeft">8dp</item>
|
||||||
|
<item name="android:paddingRight">8dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style name="DialogWindowTitle.Sherlock" parent="Widget">
|
||||||
|
<item name="android:maxLines">1</item>
|
||||||
|
<item name="android:scrollHorizontally">true</item>
|
||||||
|
<item name="android:textAppearance">@style/TextAppearance.Sherlock.DialogWindowTitle</item>
|
||||||
|
<item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
|
||||||
|
<item name="android:paddingLeft">16dip</item>
|
||||||
|
<item name="android:paddingRight">16dip</item>
|
||||||
|
</style>
|
||||||
|
<style name="DialogWindowTitle.Sherlock.Light" parent="Widget">
|
||||||
|
<item name="android:maxLines">1</item>
|
||||||
|
<item name="android:scrollHorizontally">true</item>
|
||||||
|
<item name="android:textAppearance">@style/TextAppearance.Sherlock.Light.DialogWindowTitle</item>
|
||||||
|
<item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
|
||||||
|
<item name="android:paddingLeft">16dip</item>
|
||||||
|
<item name="android:paddingRight">16dip</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="Widget">
|
||||||
|
<item name="android:textSize">12sp</item>
|
||||||
|
<item name="android:textStyle">bold</item>
|
||||||
|
<item name="android:textColor">?attr/actionMenuTextColor</item>
|
||||||
|
<item name="android:textAllCaps">@bool/abs__config_actionMenuItemAllCaps</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Sherlock.Widget.ActionBar.Title" parent="Widget">
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Title" parent="Widget">
|
||||||
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
||||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Title.Inverse" parent="Widget">
|
||||||
|
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
||||||
|
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
|
||||||
|
</style>
|
||||||
<style name="TextAppearance.Sherlock.Widget.ActionBar.Subtitle" parent="Widget">
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Subtitle" parent="Widget">
|
||||||
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
||||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionBar.Subtitle.Inverse" parent="Widget">
|
||||||
|
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
||||||
|
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
|
||||||
|
</style>
|
||||||
<style name="TextAppearance.Sherlock.Widget.ActionMode.Title" parent="Widget">
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Title" parent="Widget">
|
||||||
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
||||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Title.Inverse" parent="Widget">
|
||||||
|
<item name="android:textSize">@dimen/abs__action_bar_title_text_size</item>
|
||||||
|
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
|
||||||
|
</style>
|
||||||
<style name="TextAppearance.Sherlock.Widget.ActionMode.Subtitle" parent="Widget">
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Subtitle" parent="Widget">
|
||||||
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
||||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.ActionMode.Subtitle.Inverse" parent="Widget">
|
||||||
|
<item name="android:textSize">@dimen/abs__action_bar_subtitle_text_size</item>
|
||||||
|
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Sherlock.Widget.PopupMenu" parent="Widget">
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu" parent="Widget">
|
||||||
<item name="android:textColor">?attr/textColorPrimary</item>
|
<item name="android:textColor">?attr/textColorPrimary</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Large">
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Large">
|
||||||
<item name="android:textSize">18sp</item>
|
<item name="android:textSize">18sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.Widget.PopupMenu.Large" parent="TextAppearance.Sherlock.Widget.PopupMenu.Large">
|
||||||
|
</style>
|
||||||
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Small">
|
<style name="TextAppearance.Sherlock.Widget.PopupMenu.Small">
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.Widget.PopupMenu.Small" parent="TextAppearance.Sherlock.Widget.PopupMenu.Small">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.TextView.SpinnerItem" parent="Widget">
|
||||||
|
<item name="android:textColor">?textColorPrimary</item>
|
||||||
|
<item name="android:textSize">16sp</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.Widget.DropDownItem" parent="Widget">
|
||||||
|
<item name="android:textColor">?textColorPrimaryDisableOnly</item>
|
||||||
|
<item name="android:textSize">16sp</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.Sherlock.DialogWindowTitle" parent="Widget">
|
||||||
|
<item name="android:textSize">22sp</item>
|
||||||
|
<item name="android:textColor">@color/abs__holo_blue_light</item>
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.DialogWindowTitle" parent="Widget">
|
||||||
|
<item name="android:textSize">22sp</item>
|
||||||
|
<item name="android:textColor">@color/abs__holo_blue_light</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Sherlock.__TextAppearance.Small" parent="Widget">
|
||||||
|
<item name="android:textSize">14sp</item>
|
||||||
|
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Small" parent="Sherlock.__TextAppearance.Small">
|
||||||
|
</style>
|
||||||
|
<style name="TextAppearance.Sherlock.Light.Small" parent="TextAppearance.Sherlock.Small">
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
226
libs/ActionBarSherlock/res/values/abs__themes.xml
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<style name="Sherlock.__Theme" parent="android:Theme.NoTitleBar">
|
||||||
|
<item name="android:windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.Light" parent="android:Theme.Light.NoTitleBar">
|
||||||
|
<item name="android:windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.DarkActionBar" parent="Theme.Sherlock.Light">
|
||||||
|
</style>
|
||||||
|
<style name="Sherlock.__Theme.Dialog" parent="android:Theme.Dialog">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock" parent="Sherlock.__Theme">
|
||||||
|
<!-- Action bar styles (from Theme.Holo) -->
|
||||||
|
<item name="actionDropDownStyle">@style/Widget.Sherlock.Spinner.DropDown.ActionBar</item>
|
||||||
|
<item name="actionButtonStyle">@style/Widget.Sherlock.ActionButton</item>
|
||||||
|
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.ActionButton.Overflow</item>
|
||||||
|
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_dark</item>
|
||||||
|
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item>
|
||||||
|
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_dark</item>
|
||||||
|
<item name="actionBarTabStyle">@style/Widget.Sherlock.ActionBar.TabView</item>
|
||||||
|
<item name="actionBarTabBarStyle">@style/Widget.Sherlock.ActionBar.TabBar</item>
|
||||||
|
<item name="actionBarTabTextStyle">@style/Widget.Sherlock.ActionBar.TabText</item>
|
||||||
|
<item name="actionModeStyle">@style/Widget.Sherlock.ActionMode</item>
|
||||||
|
<item name="actionModeCloseButtonStyle">@style/Widget.Sherlock.ActionButton.CloseMode</item>
|
||||||
|
<item name="actionBarStyle">@style/Widget.Sherlock.ActionBar</item>
|
||||||
|
<item name="actionBarSize">@dimen/abs__action_bar_default_height</item>
|
||||||
|
<!-- Internal --><item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item>
|
||||||
|
<item name="actionBarWidgetTheme">@null</item>
|
||||||
|
|
||||||
|
<!-- Action bar styles (defaults from Theme) -->
|
||||||
|
<item name="actionBarSplitStyle">?attr/actionBarStyle</item>
|
||||||
|
<item name="actionMenuTextAppearance">@style/TextAppearance.Sherlock.Widget.ActionBar.Menu</item>
|
||||||
|
<item name="actionMenuTextColor">?attr/textColorPrimary</item>
|
||||||
|
<item name="actionBarDivider">?attr/dividerVertical</item>
|
||||||
|
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_dark</item>
|
||||||
|
|
||||||
|
<item name="buttonStyleSmall">@style/Widget.Sherlock.Button.Small</item>
|
||||||
|
|
||||||
|
<item name="activatedBackgroundIndicator">@drawable/abs__activated_background_holo_dark</item>
|
||||||
|
<item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_dark</item>
|
||||||
|
<item name="activityChooserViewStyle">@style/Widget.Sherlock.ActivityChooserView</item>
|
||||||
|
|
||||||
|
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item>
|
||||||
|
|
||||||
|
<item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item>
|
||||||
|
|
||||||
|
<item name="spinnerDropDownItemStyle">@style/Widget.Sherlock.DropDownItem.Spinner</item>
|
||||||
|
<item name="spinnerItemStyle">@style/Widget.Sherlock.TextView.SpinnerItem</item>
|
||||||
|
|
||||||
|
<item name="textColorPrimary">@color/abs__primary_text_holo_dark</item>
|
||||||
|
<item name="textColorPrimaryDisableOnly">@color/abs__primary_text_disable_only_holo_dark</item>
|
||||||
|
<item name="textColorPrimaryInverse">@color/abs__primary_text_holo_light</item>
|
||||||
|
|
||||||
|
<!-- Internal --><item name="dropdownListPreferredItemHeight">48dip</item>
|
||||||
|
<item name="dropDownListViewStyle">@style/Widget.Sherlock.ListView.DropDown</item>
|
||||||
|
|
||||||
|
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Small</item>
|
||||||
|
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Large</item>
|
||||||
|
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Small</item>
|
||||||
|
|
||||||
|
<item name="popupMenuStyle">@style/Widget.Sherlock.PopupMenu</item>
|
||||||
|
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.ListPopupWindow</item>
|
||||||
|
|
||||||
|
<item name="windowActionBar">true</item>
|
||||||
|
<item name="windowActionModeOverlay">false</item>
|
||||||
|
<item name="windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light" parent="Sherlock.__Theme.Light">
|
||||||
|
<!-- Action bar styles (from Theme.Holo) -->
|
||||||
|
<item name="actionDropDownStyle">@style/Widget.Sherlock.Light.Spinner.DropDown.ActionBar</item>
|
||||||
|
<item name="actionButtonStyle">@style/Widget.Sherlock.Light.ActionButton</item>
|
||||||
|
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.Light.ActionButton.Overflow</item>
|
||||||
|
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_light</item>
|
||||||
|
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_light</item>
|
||||||
|
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_light</item>
|
||||||
|
<item name="actionBarTabStyle">@style/Widget.Sherlock.Light.ActionBar.TabView</item>
|
||||||
|
<item name="actionBarTabBarStyle">@style/Widget.Sherlock.Light.ActionBar.TabBar</item>
|
||||||
|
<item name="actionBarTabTextStyle">@style/Widget.Sherlock.Light.ActionBar.TabText</item>
|
||||||
|
<item name="actionModeStyle">@style/Widget.Sherlock.Light.ActionMode</item>
|
||||||
|
<item name="actionModeCloseButtonStyle">@style/Widget.Sherlock.Light.ActionButton.CloseMode</item>
|
||||||
|
<item name="actionBarStyle">@style/Widget.Sherlock.Light.ActionBar.Solid</item>
|
||||||
|
<item name="actionBarSize">@dimen/abs__action_bar_default_height</item>
|
||||||
|
<!-- Internal --><item name="actionModePopupWindowStyle">@style/Widget.Sherlock.Light.PopupWindow.ActionMode</item>
|
||||||
|
<item name="actionBarWidgetTheme">@null</item>
|
||||||
|
|
||||||
|
<!-- Action bar styles (defaults from Theme) -->
|
||||||
|
<item name="actionBarSplitStyle">?attr/actionBarStyle</item>
|
||||||
|
<item name="actionMenuTextAppearance">@style/TextAppearance.Sherlock.Widget.ActionBar.Menu</item>
|
||||||
|
<item name="actionMenuTextColor">?attr/textColorPrimary</item>
|
||||||
|
<item name="actionBarDivider">?attr/dividerVertical</item>
|
||||||
|
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_light</item>
|
||||||
|
|
||||||
|
<item name="buttonStyleSmall">@style/Widget.Sherlock.Light.Button.Small</item>
|
||||||
|
|
||||||
|
<item name="activatedBackgroundIndicator">@drawable/abs__activated_background_holo_light</item>
|
||||||
|
<item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_light</item>
|
||||||
|
<item name="activityChooserViewStyle">@style/Widget.Sherlock.Light.ActivityChooserView</item>
|
||||||
|
|
||||||
|
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_light</item>
|
||||||
|
|
||||||
|
<item name="dividerVertical">@drawable/abs__list_divider_holo_light</item>
|
||||||
|
|
||||||
|
<item name="spinnerDropDownItemStyle">@style/Widget.Sherlock.Light.DropDownItem.Spinner</item>
|
||||||
|
<item name="spinnerItemStyle">@style/Widget.Sherlock.TextView.SpinnerItem</item>
|
||||||
|
|
||||||
|
<item name="textColorPrimary">@color/abs__primary_text_holo_light</item>
|
||||||
|
<item name="textColorPrimaryDisableOnly">@color/abs__primary_text_disable_only_holo_light</item>
|
||||||
|
<item name="textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
|
||||||
|
|
||||||
|
<!-- Internal --><item name="dropdownListPreferredItemHeight">48dip</item>
|
||||||
|
<item name="dropDownListViewStyle">@style/Widget.Sherlock.Light.ListView.DropDown</item>
|
||||||
|
|
||||||
|
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Light.Small</item>
|
||||||
|
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Large</item>
|
||||||
|
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Small</item>
|
||||||
|
|
||||||
|
<item name="popupMenuStyle">@style/Widget.Sherlock.Light.PopupMenu</item>
|
||||||
|
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.Light.ListPopupWindow</item>
|
||||||
|
|
||||||
|
<item name="windowActionBar">true</item>
|
||||||
|
<item name="windowActionModeOverlay">false</item>
|
||||||
|
<item name="windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.DarkActionBar" parent="Sherlock.__Theme.DarkActionBar">
|
||||||
|
<item name="windowContentOverlay">@drawable/abs__ab_solid_shadow_holo</item>
|
||||||
|
<item name="actionBarStyle">@style/Widget.Sherlock.Light.ActionBar.Solid.Inverse</item>
|
||||||
|
<item name="actionBarWidgetTheme">@style/Theme.Sherlock</item>
|
||||||
|
|
||||||
|
<item name="actionDropDownStyle">@style/Widget.Sherlock.Spinner.DropDown.ActionBar</item>
|
||||||
|
<item name="actionButtonStyle">@style/Widget.Sherlock.ActionButton</item>
|
||||||
|
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.ActionButton.Overflow</item>
|
||||||
|
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_dark</item>
|
||||||
|
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item>
|
||||||
|
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_dark</item>
|
||||||
|
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item>
|
||||||
|
<item name="actionBarTabStyle">@style/Widget.Sherlock.Light.ActionBar.TabView.Inverse</item>
|
||||||
|
<item name="actionBarTabBarStyle">@style/Widget.Sherlock.Light.ActionBar.TabBar.Inverse</item>
|
||||||
|
<item name="actionBarTabTextStyle">@style/Widget.Sherlock.Light.ActionBar.TabText.Inverse</item>
|
||||||
|
<item name="actionBarDivider">@drawable/abs__list_divider_holo_dark</item>
|
||||||
|
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_dark</item>
|
||||||
|
<item name="actionMenuTextColor">?attr/textColorPrimaryInverse</item>
|
||||||
|
<item name="actionModeStyle">@style/Widget.Sherlock.Light.ActionMode.Inverse</item>
|
||||||
|
<item name="actionModeCloseButtonStyle">@style/Widget.Sherlock.ActionButton.CloseMode</item>
|
||||||
|
<item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item>
|
||||||
|
|
||||||
|
<item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_dark</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock.NoActionBar">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.NoActionBar">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock.ForceOverflow">
|
||||||
|
<item name="absForceOverflow">true</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.ForceOverflow">
|
||||||
|
<item name="absForceOverflow">true</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.DarkActionBar.ForceOverflow">
|
||||||
|
<item name="absForceOverflow">true</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="Theme.Sherlock.Dialog" parent="android:Theme">
|
||||||
|
<item name="android:windowFrame">@null</item>
|
||||||
|
<item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock</item>
|
||||||
|
<item name="android:windowBackground">@drawable/abs__dialog_full_holo_dark</item>
|
||||||
|
<item name="android:windowIsFloating">true</item>
|
||||||
|
<item name="android:windowContentOverlay">@null</item>
|
||||||
|
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
|
||||||
|
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
|
||||||
|
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
<item name="android:windowActionModeOverlay">true</item>
|
||||||
|
<item name="android:windowCloseOnTouchOutside">true</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:backgroundDimAmount">0.6</item>
|
||||||
|
|
||||||
|
<item name="android:colorBackgroundCacheHint">@null</item>
|
||||||
|
|
||||||
|
<item name="android:textColorPrimary">@color/abs__primary_text_holo_dark</item>
|
||||||
|
<item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_light</item>
|
||||||
|
|
||||||
|
<item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
|
||||||
|
<item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
|
||||||
|
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Light">
|
||||||
|
<item name="android:windowFrame">@null</item>
|
||||||
|
<item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock.Light</item>
|
||||||
|
<item name="android:windowBackground">@drawable/abs__dialog_full_holo_light</item>
|
||||||
|
<item name="android:windowIsFloating">true</item>
|
||||||
|
<item name="android:windowContentOverlay">@null</item>
|
||||||
|
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
|
||||||
|
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
|
||||||
|
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
<item name="android:windowActionModeOverlay">true</item>
|
||||||
|
<item name="android:windowCloseOnTouchOutside">true</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:backgroundDimAmount">0.6</item>
|
||||||
|
|
||||||
|
<item name="android:colorBackgroundCacheHint">@null</item>
|
||||||
|
|
||||||
|
<item name="android:textColorPrimary">@color/abs__primary_text_holo_light</item>
|
||||||
|
<item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
|
||||||
|
|
||||||
|
<item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
|
||||||
|
<item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
|
||||||
|
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowContentOverlay">@null</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
@ -18,6 +18,7 @@ package com.actionbarsherlock.app;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -61,20 +62,20 @@ public abstract class ActionBar {
|
|||||||
* will dispatch onOptionsItemSelected to the host Activity with
|
* will dispatch onOptionsItemSelected to the host Activity with
|
||||||
* a MenuItem with item ID android.R.id.home.
|
* a MenuItem with item ID android.R.id.home.
|
||||||
*/
|
*/
|
||||||
public static final int NAVIGATION_MODE_STANDARD = 1;
|
public static final int NAVIGATION_MODE_STANDARD = android.app.ActionBar.NAVIGATION_MODE_STANDARD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List navigation mode. Instead of static title text this mode
|
* List navigation mode. Instead of static title text this mode
|
||||||
* presents a list menu for navigation within the activity.
|
* presents a list menu for navigation within the activity.
|
||||||
* e.g. this might be presented to the user as a dropdown list.
|
* e.g. this might be presented to the user as a dropdown list.
|
||||||
*/
|
*/
|
||||||
public static final int NAVIGATION_MODE_LIST = 2;
|
public static final int NAVIGATION_MODE_LIST = android.app.ActionBar.NAVIGATION_MODE_LIST;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tab navigation mode. Instead of static title text this mode
|
* Tab navigation mode. Instead of static title text this mode
|
||||||
* presents a series of tabs for navigation within the activity.
|
* presents a series of tabs for navigation within the activity.
|
||||||
*/
|
*/
|
||||||
public static final int NAVIGATION_MODE_TABS = 3;
|
public static final int NAVIGATION_MODE_TABS = android.app.ActionBar.NAVIGATION_MODE_TABS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use logo instead of icon if available. This flag will cause appropriate
|
* Use logo instead of icon if available. This flag will cause appropriate
|
||||||
@ -83,7 +84,7 @@ public abstract class ActionBar {
|
|||||||
* @see #setDisplayOptions(int)
|
* @see #setDisplayOptions(int)
|
||||||
* @see #setDisplayOptions(int, int)
|
* @see #setDisplayOptions(int, int)
|
||||||
*/
|
*/
|
||||||
public static final int DISPLAY_USE_LOGO = 0x01;
|
public static final int DISPLAY_USE_LOGO = android.app.ActionBar.DISPLAY_USE_LOGO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show 'home' elements in this action bar, leaving more space for other
|
* Show 'home' elements in this action bar, leaving more space for other
|
||||||
@ -92,7 +93,7 @@ public abstract class ActionBar {
|
|||||||
* @see #setDisplayOptions(int)
|
* @see #setDisplayOptions(int)
|
||||||
* @see #setDisplayOptions(int, int)
|
* @see #setDisplayOptions(int, int)
|
||||||
*/
|
*/
|
||||||
public static final int DISPLAY_SHOW_HOME = 0x02;
|
public static final int DISPLAY_SHOW_HOME = android.app.ActionBar.DISPLAY_SHOW_HOME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the 'home' element such that it appears as an 'up' affordance.
|
* Display the 'home' element such that it appears as an 'up' affordance.
|
||||||
@ -107,7 +108,7 @@ public abstract class ActionBar {
|
|||||||
* @see #setDisplayOptions(int)
|
* @see #setDisplayOptions(int)
|
||||||
* @see #setDisplayOptions(int, int)
|
* @see #setDisplayOptions(int, int)
|
||||||
*/
|
*/
|
||||||
public static final int DISPLAY_HOME_AS_UP = 0x04;
|
public static final int DISPLAY_HOME_AS_UP = android.app.ActionBar.DISPLAY_HOME_AS_UP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the activity title and subtitle, if present.
|
* Show the activity title and subtitle, if present.
|
||||||
@ -119,7 +120,7 @@ public abstract class ActionBar {
|
|||||||
* @see #setDisplayOptions(int)
|
* @see #setDisplayOptions(int)
|
||||||
* @see #setDisplayOptions(int, int)
|
* @see #setDisplayOptions(int, int)
|
||||||
*/
|
*/
|
||||||
public static final int DISPLAY_SHOW_TITLE = 0x08;
|
public static final int DISPLAY_SHOW_TITLE = android.app.ActionBar.DISPLAY_SHOW_TITLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the custom view if one has been set.
|
* Show the custom view if one has been set.
|
||||||
@ -127,7 +128,7 @@ public abstract class ActionBar {
|
|||||||
* @see #setDisplayOptions(int)
|
* @see #setDisplayOptions(int)
|
||||||
* @see #setDisplayOptions(int, int)
|
* @see #setDisplayOptions(int, int)
|
||||||
*/
|
*/
|
||||||
public static final int DISPLAY_SHOW_CUSTOM = 0x10;
|
public static final int DISPLAY_SHOW_CUSTOM = android.app.ActionBar.DISPLAY_SHOW_CUSTOM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the action bar into custom navigation mode, supplying a view
|
* Set the action bar into custom navigation mode, supplying a view
|
||||||
@ -863,7 +864,7 @@ public abstract class ActionBar {
|
|||||||
* executed in a single transaction. This FragmentTransaction does not support
|
* executed in a single transaction. This FragmentTransaction does not support
|
||||||
* being added to the back stack.
|
* being added to the back stack.
|
||||||
*/
|
*/
|
||||||
public void onTabSelected(Tab tab); //XXX, FragmentTransaction ft);
|
public void onTabSelected(Tab tab, FragmentTransaction ft);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a tab exits the selected state.
|
* Called when a tab exits the selected state.
|
||||||
@ -874,7 +875,7 @@ public abstract class ActionBar {
|
|||||||
* will be executed in a single transaction. This FragmentTransaction does not
|
* will be executed in a single transaction. This FragmentTransaction does not
|
||||||
* support being added to the back stack.
|
* support being added to the back stack.
|
||||||
*/
|
*/
|
||||||
public void onTabUnselected(Tab tab); //XXX, FragmentTransaction ft);
|
public void onTabUnselected(Tab tab, FragmentTransaction ft);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a tab that is already selected is chosen again by the user.
|
* Called when a tab that is already selected is chosen again by the user.
|
||||||
@ -885,7 +886,7 @@ public abstract class ActionBar {
|
|||||||
* once this method returns. This FragmentTransaction does not support
|
* once this method returns. This FragmentTransaction does not support
|
||||||
* being added to the back stack.
|
* being added to the back stack.
|
||||||
*/
|
*/
|
||||||
public void onTabReselected(Tab tab); //XXX, FragmentTransaction ft);
|
public void onTabReselected(Tab tab, FragmentTransaction ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,8 +18,15 @@ import com.actionbarsherlock.view.Menu;
|
|||||||
import com.actionbarsherlock.view.MenuInflater;
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
public class SherlockActivity extends Activity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
public abstract class SherlockActivity extends Activity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
||||||
final ActionBarSherlock mSherlock = ActionBarSherlock.asDelegateFor(this);
|
private ActionBarSherlock mSherlock;
|
||||||
|
|
||||||
|
protected final ActionBarSherlock getSherlock() {
|
||||||
|
if (mSherlock == null) {
|
||||||
|
mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
|
||||||
|
}
|
||||||
|
return mSherlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -27,22 +34,18 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public ActionBar getSupportActionBar() {
|
public ActionBar getSupportActionBar() {
|
||||||
return mSherlock.getActionBar();
|
return getSherlock().getActionBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionMode startActionMode(ActionMode.Callback callback) {
|
public ActionMode startActionMode(ActionMode.Callback callback) {
|
||||||
return mSherlock.startActionMode(callback);
|
return getSherlock().startActionMode(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeStarted(ActionMode mode) {
|
public void onActionModeStarted(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeFinished(ActionMode mode) {
|
public void onActionModeFinished(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -52,42 +55,42 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
mSherlock.dispatchConfigurationChanged(newConfig);
|
getSherlock().dispatchConfigurationChanged(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostResume() {
|
protected void onPostResume() {
|
||||||
super.onPostResume();
|
super.onPostResume();
|
||||||
mSherlock.dispatchPostResume();
|
getSherlock().dispatchPostResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
mSherlock.dispatchPause();
|
getSherlock().dispatchPause();
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
mSherlock.dispatchStop();
|
getSherlock().dispatchStop();
|
||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
mSherlock.dispatchPostCreate(savedInstanceState);
|
getSherlock().dispatchPostCreate(savedInstanceState);
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
protected void onTitleChanged(CharSequence title, int color) {
|
||||||
mSherlock.dispatchTitleChanged(title, color);
|
getSherlock().dispatchTitleChanged(title, color);
|
||||||
super.onTitleChanged(title, color);
|
super.onTitleChanged(title, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
||||||
if (mSherlock.dispatchMenuOpened(featureId, menu)) {
|
if (getSherlock().dispatchMenuOpened(featureId, menu)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onMenuOpened(featureId, menu);
|
return super.onMenuOpened(featureId, menu);
|
||||||
@ -95,32 +98,69 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
||||||
mSherlock.dispatchPanelClosed(featureId, menu);
|
getSherlock().dispatchPanelClosed(featureId, menu);
|
||||||
super.onPanelClosed(featureId, menu);
|
super.onPanelClosed(featureId, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
if (mSherlock.dispatchKeyUp(keyCode, event)) {
|
if (getSherlock().dispatchKeyEvent(event)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.dispatchKeyEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Menu handling
|
// Native menu handling
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public MenuInflater getSupportMenuInflater() {
|
public MenuInflater getSupportMenuInflater() {
|
||||||
return mSherlock.getMenuInflater();
|
return getSherlock().getMenuInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invalidateOptionsMenu() {
|
||||||
|
getSherlock().dispatchInvalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void supportInvalidateOptionsMenu() {
|
||||||
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
||||||
return true;
|
return getSherlock().dispatchCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
return getSherlock().dispatchPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
return getSherlock().dispatchOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchOpenOptionsMenu()) {
|
||||||
|
super.openOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchCloseOptionsMenu()) {
|
||||||
|
super.closeOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Sherlock menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -133,11 +173,6 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
|
||||||
return mSherlock.dispatchPrepareOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -150,11 +185,6 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
|
||||||
throw new RuntimeException("This should never be called. Create reproducible test case and report!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -167,30 +197,6 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void invalidateOptionsMenu() {
|
|
||||||
mSherlock.dispatchInvalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated Use {@link #invalidateOptionsMenu()}. */
|
|
||||||
@Deprecated
|
|
||||||
public void supportInvalidateOptionsMenu() {
|
|
||||||
invalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchOpenOptionsMenu()) {
|
|
||||||
super.openOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchCloseOptionsMenu()) {
|
|
||||||
super.closeOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Content
|
// Content
|
||||||
@ -198,26 +204,26 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addContentView(View view, LayoutParams params) {
|
public void addContentView(View view, LayoutParams params) {
|
||||||
mSherlock.addContentView(view, params);
|
getSherlock().addContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(int layoutResId) {
|
public void setContentView(int layoutResId) {
|
||||||
mSherlock.setContentView(layoutResId);
|
getSherlock().setContentView(layoutResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view, LayoutParams params) {
|
public void setContentView(View view, LayoutParams params) {
|
||||||
mSherlock.setContentView(view, params);
|
getSherlock().setContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view) {
|
public void setContentView(View view) {
|
||||||
mSherlock.setContentView(view);
|
getSherlock().setContentView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestWindowFeature(long featureId) {
|
public void requestWindowFeature(long featureId) {
|
||||||
mSherlock.requestFeature((int)featureId);
|
getSherlock().requestFeature((int)featureId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -226,22 +232,22 @@ public class SherlockActivity extends Activity implements OnCreatePanelMenuListe
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public void setSupportProgress(int progress) {
|
public void setSupportProgress(int progress) {
|
||||||
mSherlock.setProgress(progress);
|
getSherlock().setProgress(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
||||||
mSherlock.setProgressBarIndeterminate(indeterminate);
|
getSherlock().setProgressBarIndeterminate(indeterminate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarIndeterminateVisibility(visible);
|
getSherlock().setProgressBarIndeterminateVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarVisibility(boolean visible) {
|
public void setSupportProgressBarVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarVisibility(visible);
|
getSherlock().setProgressBarVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportSecondaryProgress(int secondaryProgress) {
|
public void setSupportSecondaryProgress(int secondaryProgress) {
|
||||||
mSherlock.setSecondaryProgress(secondaryProgress);
|
getSherlock().setSecondaryProgress(secondaryProgress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.actionbarsherlock.app;
|
||||||
|
|
||||||
|
import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
|
import android.util.Log;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuItemMule;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuMule;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class SherlockDialogFragment extends DialogFragment {
|
||||||
|
private static final String TAG = "SherlockDialogFragment";
|
||||||
|
|
||||||
|
private SherlockFragmentActivity mActivity;
|
||||||
|
|
||||||
|
public SherlockFragmentActivity getSherlockActivity() {
|
||||||
|
return mActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
if (!(activity instanceof SherlockFragmentActivity)) {
|
||||||
|
throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
|
||||||
|
}
|
||||||
|
mActivity = (SherlockFragmentActivity)activity;
|
||||||
|
|
||||||
|
super.onAttach(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onCreateOptionsMenu(((MenuMule)menu).unwrap(), mActivity.getSupportMenuInflater());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onPrepareOptionsMenu(((MenuMule)menu).unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
|
||||||
|
|
||||||
|
if (item instanceof MenuItemMule) {
|
||||||
|
return onOptionsItemSelected(((MenuItemMule)item).unwrap());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
//Nothing to see here.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -18,8 +18,15 @@ import com.actionbarsherlock.view.Menu;
|
|||||||
import com.actionbarsherlock.view.MenuInflater;
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
public class SherlockExpandableListActivity extends ExpandableListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
public abstract class SherlockExpandableListActivity extends ExpandableListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
||||||
final ActionBarSherlock mSherlock = ActionBarSherlock.asDelegateFor(this);
|
private ActionBarSherlock mSherlock;
|
||||||
|
|
||||||
|
protected final ActionBarSherlock getSherlock() {
|
||||||
|
if (mSherlock == null) {
|
||||||
|
mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
|
||||||
|
}
|
||||||
|
return mSherlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -27,22 +34,18 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public ActionBar getSupportActionBar() {
|
public ActionBar getSupportActionBar() {
|
||||||
return mSherlock.getActionBar();
|
return getSherlock().getActionBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionMode startActionMode(ActionMode.Callback callback) {
|
public ActionMode startActionMode(ActionMode.Callback callback) {
|
||||||
return mSherlock.startActionMode(callback);
|
return getSherlock().startActionMode(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeStarted(ActionMode mode) {
|
public void onActionModeStarted(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeFinished(ActionMode mode) {
|
public void onActionModeFinished(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -52,42 +55,42 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
mSherlock.dispatchConfigurationChanged(newConfig);
|
getSherlock().dispatchConfigurationChanged(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostResume() {
|
protected void onPostResume() {
|
||||||
super.onPostResume();
|
super.onPostResume();
|
||||||
mSherlock.dispatchPostResume();
|
getSherlock().dispatchPostResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
mSherlock.dispatchPause();
|
getSherlock().dispatchPause();
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
mSherlock.dispatchStop();
|
getSherlock().dispatchStop();
|
||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
mSherlock.dispatchPostCreate(savedInstanceState);
|
getSherlock().dispatchPostCreate(savedInstanceState);
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
protected void onTitleChanged(CharSequence title, int color) {
|
||||||
mSherlock.dispatchTitleChanged(title, color);
|
getSherlock().dispatchTitleChanged(title, color);
|
||||||
super.onTitleChanged(title, color);
|
super.onTitleChanged(title, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
||||||
if (mSherlock.dispatchMenuOpened(featureId, menu)) {
|
if (getSherlock().dispatchMenuOpened(featureId, menu)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onMenuOpened(featureId, menu);
|
return super.onMenuOpened(featureId, menu);
|
||||||
@ -95,32 +98,69 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
||||||
mSherlock.dispatchPanelClosed(featureId, menu);
|
getSherlock().dispatchPanelClosed(featureId, menu);
|
||||||
super.onPanelClosed(featureId, menu);
|
super.onPanelClosed(featureId, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
if (mSherlock.dispatchKeyUp(keyCode, event)) {
|
if (getSherlock().dispatchKeyEvent(event)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.dispatchKeyEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Menu handling
|
// Native menu handling
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public MenuInflater getSupportMenuInflater() {
|
public MenuInflater getSupportMenuInflater() {
|
||||||
return mSherlock.getMenuInflater();
|
return getSherlock().getMenuInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invalidateOptionsMenu() {
|
||||||
|
getSherlock().dispatchInvalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void supportInvalidateOptionsMenu() {
|
||||||
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
||||||
return true;
|
return getSherlock().dispatchCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
return getSherlock().dispatchPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
return getSherlock().dispatchOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchOpenOptionsMenu()) {
|
||||||
|
super.openOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchCloseOptionsMenu()) {
|
||||||
|
super.closeOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Sherlock menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -133,11 +173,6 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
|
||||||
return mSherlock.dispatchPrepareOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -150,11 +185,6 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
|
||||||
throw new RuntimeException("This should never be called. Create reproducible test case and report!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -167,30 +197,6 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void invalidateOptionsMenu() {
|
|
||||||
mSherlock.dispatchInvalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated Use {@link #invalidateOptionsMenu()}. */
|
|
||||||
@Deprecated
|
|
||||||
public void supportInvalidateOptionsMenu() {
|
|
||||||
invalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchOpenOptionsMenu()) {
|
|
||||||
super.openOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchCloseOptionsMenu()) {
|
|
||||||
super.closeOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Content
|
// Content
|
||||||
@ -198,26 +204,26 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addContentView(View view, LayoutParams params) {
|
public void addContentView(View view, LayoutParams params) {
|
||||||
mSherlock.addContentView(view, params);
|
getSherlock().addContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(int layoutResId) {
|
public void setContentView(int layoutResId) {
|
||||||
mSherlock.setContentView(layoutResId);
|
getSherlock().setContentView(layoutResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view, LayoutParams params) {
|
public void setContentView(View view, LayoutParams params) {
|
||||||
mSherlock.setContentView(view, params);
|
getSherlock().setContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view) {
|
public void setContentView(View view) {
|
||||||
mSherlock.setContentView(view);
|
getSherlock().setContentView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestWindowFeature(long featureId) {
|
public void requestWindowFeature(long featureId) {
|
||||||
mSherlock.requestFeature((int)featureId);
|
getSherlock().requestFeature((int)featureId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -226,22 +232,22 @@ public class SherlockExpandableListActivity extends ExpandableListActivity imple
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public void setSupportProgress(int progress) {
|
public void setSupportProgress(int progress) {
|
||||||
mSherlock.setProgress(progress);
|
getSherlock().setProgress(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
||||||
mSherlock.setProgressBarIndeterminate(indeterminate);
|
getSherlock().setProgressBarIndeterminate(indeterminate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarIndeterminateVisibility(visible);
|
getSherlock().setProgressBarIndeterminateVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarVisibility(boolean visible) {
|
public void setSupportProgressBarVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarVisibility(visible);
|
getSherlock().setProgressBarVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportSecondaryProgress(int secondaryProgress) {
|
public void setSupportSecondaryProgress(int secondaryProgress) {
|
||||||
mSherlock.setSecondaryProgress(secondaryProgress);
|
getSherlock().setSecondaryProgress(secondaryProgress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.actionbarsherlock.app;
|
||||||
|
|
||||||
|
import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.util.Log;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuItemMule;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuMule;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class SherlockFragment extends Fragment {
|
||||||
|
private static final String TAG = "SherlockFragment";
|
||||||
|
|
||||||
|
private SherlockFragmentActivity mActivity;
|
||||||
|
|
||||||
|
public SherlockFragmentActivity getSherlockActivity() {
|
||||||
|
return mActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
if (!(activity instanceof SherlockFragmentActivity)) {
|
||||||
|
throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
|
||||||
|
}
|
||||||
|
mActivity = (SherlockFragmentActivity)activity;
|
||||||
|
|
||||||
|
super.onAttach(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onCreateOptionsMenu(((MenuMule)menu).unwrap(), mActivity.getSupportMenuInflater());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onPrepareOptionsMenu(((MenuMule)menu).unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
|
||||||
|
|
||||||
|
if (item instanceof MenuItemMule) {
|
||||||
|
return onOptionsItemSelected(((MenuItemMule)item).unwrap());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
//Nothing to see here.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,347 @@
|
|||||||
|
package com.actionbarsherlock.app;
|
||||||
|
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup.LayoutParams;
|
||||||
|
import android.view.Window;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener;
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuItemMule;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuMule;
|
||||||
|
import com.actionbarsherlock.view.ActionMode;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public abstract class SherlockFragmentActivity extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
||||||
|
static final boolean DEBUG = false;
|
||||||
|
private static final String TAG = "SherlockFragmentActivity";
|
||||||
|
|
||||||
|
private ActionBarSherlock mSherlock;
|
||||||
|
private boolean mIgnoreNativeCreate = false;
|
||||||
|
private boolean mIgnoreNativePrepare = false;
|
||||||
|
private boolean mIgnoreNativeSelected = false;
|
||||||
|
private Boolean mOverrideNativeCreate = null;
|
||||||
|
|
||||||
|
protected final ActionBarSherlock getSherlock() {
|
||||||
|
if (mSherlock == null) {
|
||||||
|
mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
|
||||||
|
}
|
||||||
|
return mSherlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Action bar and mode
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public ActionBar getSupportActionBar() {
|
||||||
|
return getSherlock().getActionBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionMode startActionMode(ActionMode.Callback callback) {
|
||||||
|
return getSherlock().startActionMode(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActionModeStarted(ActionMode mode) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActionModeFinished(ActionMode mode) {}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// General lifecycle/callback dispatching
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
|
super.onConfigurationChanged(newConfig);
|
||||||
|
getSherlock().dispatchConfigurationChanged(newConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostResume() {
|
||||||
|
super.onPostResume();
|
||||||
|
getSherlock().dispatchPostResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
getSherlock().dispatchPause();
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
getSherlock().dispatchStop();
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
|
getSherlock().dispatchPostCreate(savedInstanceState);
|
||||||
|
super.onPostCreate(savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onTitleChanged(CharSequence title, int color) {
|
||||||
|
getSherlock().dispatchTitleChanged(title, color);
|
||||||
|
super.onTitleChanged(title, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
||||||
|
if (getSherlock().dispatchMenuOpened(featureId, menu)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.onMenuOpened(featureId, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
||||||
|
getSherlock().dispatchPanelClosed(featureId, menu);
|
||||||
|
super.onPanelClosed(featureId, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
|
if (getSherlock().dispatchKeyEvent(event)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.dispatchKeyEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Native menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public MenuInflater getSupportMenuInflater() {
|
||||||
|
if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
|
||||||
|
|
||||||
|
return getSherlock().getMenuInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invalidateOptionsMenu() {
|
||||||
|
if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
|
||||||
|
|
||||||
|
getSherlock().dispatchInvalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void supportInvalidateOptionsMenu() {
|
||||||
|
if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
|
||||||
|
|
||||||
|
invalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) {
|
||||||
|
mIgnoreNativeCreate = true;
|
||||||
|
boolean result = getSherlock().dispatchCreateOptionsMenu(menu);
|
||||||
|
mIgnoreNativeCreate = false;
|
||||||
|
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return super.onCreatePanelMenu(featureId, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
||||||
|
return (mOverrideNativeCreate != null) ? mOverrideNativeCreate.booleanValue() : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) {
|
||||||
|
mIgnoreNativePrepare = true;
|
||||||
|
boolean result = getSherlock().dispatchPrepareOptionsMenu(menu);
|
||||||
|
mIgnoreNativePrepare = false;
|
||||||
|
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return super.onPreparePanel(featureId, view, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
|
||||||
|
mIgnoreNativeSelected = true;
|
||||||
|
boolean result = getSherlock().dispatchOptionsItemSelected(item);
|
||||||
|
mIgnoreNativeSelected = false;
|
||||||
|
|
||||||
|
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return super.onMenuItemSelected(featureId, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchOpenOptionsMenu()) {
|
||||||
|
super.openOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchCloseOptionsMenu()) {
|
||||||
|
super.closeOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Sherlock menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
|
boolean result = onCreateOptionsMenu(menu);
|
||||||
|
|
||||||
|
//Dispatch to parent panel creation for fragment dispatching
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] dispatching to native with mule");
|
||||||
|
mOverrideNativeCreate = result;
|
||||||
|
boolean fragResult = super.onCreatePanelMenu(featureId, new MenuMule(menu));
|
||||||
|
mOverrideNativeCreate = null;
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
|
||||||
|
result |= menu.hasVisibleItems();
|
||||||
|
} else {
|
||||||
|
result |= fragResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
|
boolean result = onPrepareOptionsMenu(menu);
|
||||||
|
|
||||||
|
//Dispatch to parent panel preparation for fragment dispatching
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPreparePanel] dispatching to native with mule");
|
||||||
|
super.onPreparePanel(featureId, view, new MenuMule(menu));
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
|
||||||
|
|
||||||
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
|
if (onOptionsItemSelected(item)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Dispatch to parent panel selection for fragment dispatching
|
||||||
|
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] dispatching to native with mule");
|
||||||
|
return super.onMenuItemSelected(featureId, new MenuItemMule(item));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Content
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addContentView(View view, LayoutParams params) {
|
||||||
|
getSherlock().addContentView(view, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContentView(int layoutResId) {
|
||||||
|
getSherlock().setContentView(layoutResId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContentView(View view, LayoutParams params) {
|
||||||
|
getSherlock().setContentView(view, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContentView(View view) {
|
||||||
|
getSherlock().setContentView(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requestWindowFeature(long featureId) {
|
||||||
|
getSherlock().requestFeature((int)featureId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Progress Indication
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public void setSupportProgress(int progress) {
|
||||||
|
getSherlock().setProgress(progress);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
||||||
|
getSherlock().setProgressBarIndeterminate(indeterminate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
|
getSherlock().setProgressBarIndeterminateVisibility(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSupportProgressBarVisibility(boolean visible) {
|
||||||
|
getSherlock().setProgressBarVisibility(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSupportSecondaryProgress(int secondaryProgress) {
|
||||||
|
getSherlock().setSecondaryProgress(secondaryProgress);
|
||||||
|
}
|
||||||
|
}
|
@ -18,8 +18,15 @@ import com.actionbarsherlock.view.Menu;
|
|||||||
import com.actionbarsherlock.view.MenuInflater;
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
public class SherlockListActivity extends ListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
public abstract class SherlockListActivity extends ListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
||||||
final ActionBarSherlock mSherlock = ActionBarSherlock.asDelegateFor(this);
|
private ActionBarSherlock mSherlock;
|
||||||
|
|
||||||
|
protected final ActionBarSherlock getSherlock() {
|
||||||
|
if (mSherlock == null) {
|
||||||
|
mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
|
||||||
|
}
|
||||||
|
return mSherlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -27,22 +34,18 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public ActionBar getSupportActionBar() {
|
public ActionBar getSupportActionBar() {
|
||||||
return mSherlock.getActionBar();
|
return getSherlock().getActionBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionMode startActionMode(ActionMode.Callback callback) {
|
public ActionMode startActionMode(ActionMode.Callback callback) {
|
||||||
return mSherlock.startActionMode(callback);
|
return getSherlock().startActionMode(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeStarted(ActionMode mode) {
|
public void onActionModeStarted(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeFinished(ActionMode mode) {
|
public void onActionModeFinished(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -52,42 +55,42 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
mSherlock.dispatchConfigurationChanged(newConfig);
|
getSherlock().dispatchConfigurationChanged(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostResume() {
|
protected void onPostResume() {
|
||||||
super.onPostResume();
|
super.onPostResume();
|
||||||
mSherlock.dispatchPostResume();
|
getSherlock().dispatchPostResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
mSherlock.dispatchPause();
|
getSherlock().dispatchPause();
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
mSherlock.dispatchStop();
|
getSherlock().dispatchStop();
|
||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
mSherlock.dispatchPostCreate(savedInstanceState);
|
getSherlock().dispatchPostCreate(savedInstanceState);
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
protected void onTitleChanged(CharSequence title, int color) {
|
||||||
mSherlock.dispatchTitleChanged(title, color);
|
getSherlock().dispatchTitleChanged(title, color);
|
||||||
super.onTitleChanged(title, color);
|
super.onTitleChanged(title, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
||||||
if (mSherlock.dispatchMenuOpened(featureId, menu)) {
|
if (getSherlock().dispatchMenuOpened(featureId, menu)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onMenuOpened(featureId, menu);
|
return super.onMenuOpened(featureId, menu);
|
||||||
@ -95,32 +98,69 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
||||||
mSherlock.dispatchPanelClosed(featureId, menu);
|
getSherlock().dispatchPanelClosed(featureId, menu);
|
||||||
super.onPanelClosed(featureId, menu);
|
super.onPanelClosed(featureId, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
if (mSherlock.dispatchKeyUp(keyCode, event)) {
|
if (getSherlock().dispatchKeyEvent(event)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.dispatchKeyEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Menu handling
|
// Native menu handling
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public MenuInflater getSupportMenuInflater() {
|
public MenuInflater getSupportMenuInflater() {
|
||||||
return mSherlock.getMenuInflater();
|
return getSherlock().getMenuInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invalidateOptionsMenu() {
|
||||||
|
getSherlock().dispatchInvalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void supportInvalidateOptionsMenu() {
|
||||||
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
||||||
return true;
|
return getSherlock().dispatchCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
return getSherlock().dispatchPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
return getSherlock().dispatchOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchOpenOptionsMenu()) {
|
||||||
|
super.openOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchCloseOptionsMenu()) {
|
||||||
|
super.closeOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Sherlock menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -133,11 +173,6 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
|
||||||
return mSherlock.dispatchPrepareOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -150,11 +185,6 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
|
||||||
throw new RuntimeException("This should never be called. Create reproducible test case and report!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -167,30 +197,6 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void invalidateOptionsMenu() {
|
|
||||||
mSherlock.dispatchInvalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated Use {@link #invalidateOptionsMenu()}. */
|
|
||||||
@Deprecated
|
|
||||||
public void supportInvalidateOptionsMenu() {
|
|
||||||
invalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchOpenOptionsMenu()) {
|
|
||||||
super.openOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchCloseOptionsMenu()) {
|
|
||||||
super.closeOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Content
|
// Content
|
||||||
@ -198,26 +204,26 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addContentView(View view, LayoutParams params) {
|
public void addContentView(View view, LayoutParams params) {
|
||||||
mSherlock.addContentView(view, params);
|
getSherlock().addContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(int layoutResId) {
|
public void setContentView(int layoutResId) {
|
||||||
mSherlock.setContentView(layoutResId);
|
getSherlock().setContentView(layoutResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view, LayoutParams params) {
|
public void setContentView(View view, LayoutParams params) {
|
||||||
mSherlock.setContentView(view, params);
|
getSherlock().setContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view) {
|
public void setContentView(View view) {
|
||||||
mSherlock.setContentView(view);
|
getSherlock().setContentView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestWindowFeature(long featureId) {
|
public void requestWindowFeature(long featureId) {
|
||||||
mSherlock.requestFeature((int)featureId);
|
getSherlock().requestFeature((int)featureId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -226,22 +232,22 @@ public class SherlockListActivity extends ListActivity implements OnCreatePanelM
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public void setSupportProgress(int progress) {
|
public void setSupportProgress(int progress) {
|
||||||
mSherlock.setProgress(progress);
|
getSherlock().setProgress(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
||||||
mSherlock.setProgressBarIndeterminate(indeterminate);
|
getSherlock().setProgressBarIndeterminate(indeterminate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarIndeterminateVisibility(visible);
|
getSherlock().setProgressBarIndeterminateVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarVisibility(boolean visible) {
|
public void setSupportProgressBarVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarVisibility(visible);
|
getSherlock().setProgressBarVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportSecondaryProgress(int secondaryProgress) {
|
public void setSupportSecondaryProgress(int secondaryProgress) {
|
||||||
mSherlock.setSecondaryProgress(secondaryProgress);
|
getSherlock().setSecondaryProgress(secondaryProgress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.actionbarsherlock.app;
|
||||||
|
|
||||||
|
import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.support.v4.app.ListFragment;
|
||||||
|
import android.util.Log;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuItemMule;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuMule;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class SherlockListFragment extends ListFragment {
|
||||||
|
private static final String TAG = "SherlockListFragment";
|
||||||
|
|
||||||
|
private SherlockFragmentActivity mActivity;
|
||||||
|
|
||||||
|
public SherlockFragmentActivity getSherlockActivity() {
|
||||||
|
return mActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
if (!(activity instanceof SherlockFragmentActivity)) {
|
||||||
|
throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
|
||||||
|
}
|
||||||
|
mActivity = (SherlockFragmentActivity)activity;
|
||||||
|
|
||||||
|
super.onAttach(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onCreateOptionsMenu(((MenuMule)menu).unwrap(), mActivity.getSupportMenuInflater());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
|
||||||
|
|
||||||
|
if (menu instanceof MenuMule) {
|
||||||
|
onPrepareOptionsMenu(((MenuMule)menu).unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
|
//Nothing to see here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
|
||||||
|
|
||||||
|
if (item instanceof MenuItemMule) {
|
||||||
|
return onOptionsItemSelected(((MenuItemMule)item).unwrap());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
//Nothing to see here.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -18,8 +18,15 @@ import com.actionbarsherlock.view.Menu;
|
|||||||
import com.actionbarsherlock.view.MenuInflater;
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
public class SherlockPreferenceActivity extends PreferenceActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
public abstract class SherlockPreferenceActivity extends PreferenceActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
|
||||||
final ActionBarSherlock mSherlock = ActionBarSherlock.asDelegateFor(this);
|
private ActionBarSherlock mSherlock;
|
||||||
|
|
||||||
|
protected final ActionBarSherlock getSherlock() {
|
||||||
|
if (mSherlock == null) {
|
||||||
|
mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
|
||||||
|
}
|
||||||
|
return mSherlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -27,22 +34,18 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public ActionBar getSupportActionBar() {
|
public ActionBar getSupportActionBar() {
|
||||||
return mSherlock.getActionBar();
|
return getSherlock().getActionBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionMode startActionMode(ActionMode.Callback callback) {
|
public ActionMode startActionMode(ActionMode.Callback callback) {
|
||||||
return mSherlock.startActionMode(callback);
|
return getSherlock().startActionMode(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeStarted(ActionMode mode) {
|
public void onActionModeStarted(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActionModeFinished(ActionMode mode) {
|
public void onActionModeFinished(ActionMode mode) {}
|
||||||
//This space for rent.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -52,42 +55,42 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
mSherlock.dispatchConfigurationChanged(newConfig);
|
getSherlock().dispatchConfigurationChanged(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostResume() {
|
protected void onPostResume() {
|
||||||
super.onPostResume();
|
super.onPostResume();
|
||||||
mSherlock.dispatchPostResume();
|
getSherlock().dispatchPostResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
mSherlock.dispatchPause();
|
getSherlock().dispatchPause();
|
||||||
super.onPause();
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
mSherlock.dispatchStop();
|
getSherlock().dispatchStop();
|
||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
mSherlock.dispatchPostCreate(savedInstanceState);
|
getSherlock().dispatchPostCreate(savedInstanceState);
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
protected void onTitleChanged(CharSequence title, int color) {
|
||||||
mSherlock.dispatchTitleChanged(title, color);
|
getSherlock().dispatchTitleChanged(title, color);
|
||||||
super.onTitleChanged(title, color);
|
super.onTitleChanged(title, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
|
||||||
if (mSherlock.dispatchMenuOpened(featureId, menu)) {
|
if (getSherlock().dispatchMenuOpened(featureId, menu)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onMenuOpened(featureId, menu);
|
return super.onMenuOpened(featureId, menu);
|
||||||
@ -95,32 +98,69 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
public void onPanelClosed(int featureId, android.view.Menu menu) {
|
||||||
mSherlock.dispatchPanelClosed(featureId, menu);
|
getSherlock().dispatchPanelClosed(featureId, menu);
|
||||||
super.onPanelClosed(featureId, menu);
|
super.onPanelClosed(featureId, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
if (mSherlock.dispatchKeyUp(keyCode, event)) {
|
if (getSherlock().dispatchKeyEvent(event)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.dispatchKeyEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Menu handling
|
// Native menu handling
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public MenuInflater getSupportMenuInflater() {
|
public MenuInflater getSupportMenuInflater() {
|
||||||
return mSherlock.getMenuInflater();
|
return getSherlock().getMenuInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invalidateOptionsMenu() {
|
||||||
|
getSherlock().dispatchInvalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void supportInvalidateOptionsMenu() {
|
||||||
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
|
||||||
return true;
|
return getSherlock().dispatchCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
return getSherlock().dispatchPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
return getSherlock().dispatchOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchOpenOptionsMenu()) {
|
||||||
|
super.openOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeOptionsMenu() {
|
||||||
|
if (!getSherlock().dispatchCloseOptionsMenu()) {
|
||||||
|
super.closeOptionsMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// Sherlock menu handling
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
public boolean onCreatePanelMenu(int featureId, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -133,11 +173,6 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
|
|
||||||
return mSherlock.dispatchPrepareOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
public boolean onPreparePanel(int featureId, View view, Menu menu) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -150,11 +185,6 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
|
|
||||||
throw new RuntimeException("This should never be called. Create reproducible test case and report!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||||
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
|
||||||
@ -167,30 +197,6 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void invalidateOptionsMenu() {
|
|
||||||
mSherlock.dispatchInvalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated Use {@link #invalidateOptionsMenu()}. */
|
|
||||||
@Deprecated
|
|
||||||
public void supportInvalidateOptionsMenu() {
|
|
||||||
invalidateOptionsMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchOpenOptionsMenu()) {
|
|
||||||
super.openOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeOptionsMenu() {
|
|
||||||
if (!mSherlock.dispatchCloseOptionsMenu()) {
|
|
||||||
super.closeOptionsMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Content
|
// Content
|
||||||
@ -198,26 +204,26 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addContentView(View view, LayoutParams params) {
|
public void addContentView(View view, LayoutParams params) {
|
||||||
mSherlock.addContentView(view, params);
|
getSherlock().addContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(int layoutResId) {
|
public void setContentView(int layoutResId) {
|
||||||
mSherlock.setContentView(layoutResId);
|
getSherlock().setContentView(layoutResId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view, LayoutParams params) {
|
public void setContentView(View view, LayoutParams params) {
|
||||||
mSherlock.setContentView(view, params);
|
getSherlock().setContentView(view, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setContentView(View view) {
|
public void setContentView(View view) {
|
||||||
mSherlock.setContentView(view);
|
getSherlock().setContentView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestWindowFeature(long featureId) {
|
public void requestWindowFeature(long featureId) {
|
||||||
mSherlock.requestFeature((int)featureId);
|
getSherlock().requestFeature((int)featureId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -226,22 +232,22 @@ public class SherlockPreferenceActivity extends PreferenceActivity implements On
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public void setSupportProgress(int progress) {
|
public void setSupportProgress(int progress) {
|
||||||
mSherlock.setProgress(progress);
|
getSherlock().setProgress(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
|
||||||
mSherlock.setProgressBarIndeterminate(indeterminate);
|
getSherlock().setProgressBarIndeterminate(indeterminate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarIndeterminateVisibility(visible);
|
getSherlock().setProgressBarIndeterminateVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportProgressBarVisibility(boolean visible) {
|
public void setSupportProgressBarVisibility(boolean visible) {
|
||||||
mSherlock.setProgressBarVisibility(visible);
|
getSherlock().setProgressBarVisibility(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSupportSecondaryProgress(int secondaryProgress) {
|
public void setSupportSecondaryProgress(int secondaryProgress) {
|
||||||
mSherlock.setSecondaryProgress(secondaryProgress);
|
getSherlock().setSecondaryProgress(secondaryProgress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,318 @@
|
|||||||
|
package com.actionbarsherlock.internal;
|
||||||
|
|
||||||
|
import com.actionbarsherlock.ActionBarSherlock;
|
||||||
|
import com.actionbarsherlock.app.ActionBar;
|
||||||
|
import com.actionbarsherlock.internal.app.ActionBarWrapper;
|
||||||
|
import com.actionbarsherlock.internal.view.menu.MenuWrapper;
|
||||||
|
import com.actionbarsherlock.view.ActionMode;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.util.TypedValue;
|
||||||
|
import android.view.ContextThemeWrapper;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.Window;
|
||||||
|
import android.view.ViewGroup.LayoutParams;
|
||||||
|
|
||||||
|
@ActionBarSherlock.Implementation(api = 14)
|
||||||
|
public class ActionBarSherlockNative extends ActionBarSherlock {
|
||||||
|
private ActionBarWrapper mActionBar;
|
||||||
|
private ActionModeWrapper mActionMode;
|
||||||
|
private MenuWrapper mMenu;
|
||||||
|
|
||||||
|
public ActionBarSherlockNative(Activity activity, int flags) {
|
||||||
|
super(activity, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionBar getActionBar() {
|
||||||
|
if (DEBUG) Log.d(TAG, "[getActionBar]");
|
||||||
|
|
||||||
|
initActionBar();
|
||||||
|
return mActionBar;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initActionBar() {
|
||||||
|
if (mActionBar != null || mActivity.getActionBar() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mActionBar = new ActionBarWrapper(mActivity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispatchInvalidateOptionsMenu() {
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
|
||||||
|
|
||||||
|
mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchCreateOptionsMenu(android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] menu: " + menu);
|
||||||
|
|
||||||
|
if (mMenu == null || menu != mMenu.unwrap()) {
|
||||||
|
mMenu = new MenuWrapper(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
final boolean result = callbackCreateOptionsMenu(mMenu);
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] menu: " + menu);
|
||||||
|
|
||||||
|
final boolean result = callbackPrepareOptionsMenu(mMenu);
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchOptionsItemSelected(android.view.MenuItem item) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] item: " + item.getTitleCondensed());
|
||||||
|
|
||||||
|
final boolean result = callbackOptionsItemSelected(mMenu.findItem(item));
|
||||||
|
if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasFeature(int feature) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature);
|
||||||
|
|
||||||
|
final boolean result = mActivity.getWindow().hasFeature(feature);
|
||||||
|
if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean requestFeature(int featureId) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
|
||||||
|
|
||||||
|
final boolean result = mActivity.getWindow().requestFeature(featureId);
|
||||||
|
if (DEBUG) Log.d(TAG, "[requestFeature] returning " + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUiOptions(int uiOptions) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);
|
||||||
|
|
||||||
|
mActivity.getWindow().setUiOptions(uiOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUiOptions(int uiOptions, int mask) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask);
|
||||||
|
|
||||||
|
mActivity.getWindow().setUiOptions(uiOptions, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContentView(int layoutResId) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
|
||||||
|
|
||||||
|
mActivity.getWindow().setContentView(layoutResId);
|
||||||
|
initActionBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContentView(View view, LayoutParams params) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
|
||||||
|
|
||||||
|
mActivity.getWindow().setContentView(view, params);
|
||||||
|
initActionBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addContentView(View view, LayoutParams params) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
|
||||||
|
|
||||||
|
mActivity.getWindow().addContentView(view, params);
|
||||||
|
initActionBar();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(CharSequence title) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setTitle] title: " + title);
|
||||||
|
|
||||||
|
mActivity.getWindow().setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProgressBarVisibility(boolean visible) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
|
||||||
|
|
||||||
|
mActivity.setProgressBarVisibility(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProgressBarIndeterminateVisibility(boolean visible) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
|
||||||
|
|
||||||
|
mActivity.setProgressBarIndeterminateVisibility(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProgressBarIndeterminate(boolean indeterminate) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
|
||||||
|
|
||||||
|
mActivity.setProgressBarIndeterminate(indeterminate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProgress(int progress) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
|
||||||
|
|
||||||
|
mActivity.setProgress(progress);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSecondaryProgress(int secondaryProgress) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
|
||||||
|
|
||||||
|
mActivity.setSecondaryProgress(secondaryProgress);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Context getThemedContext() {
|
||||||
|
Context context = mActivity;
|
||||||
|
TypedValue outValue = new TypedValue();
|
||||||
|
mActivity.getTheme().resolveAttribute(android.R.attr.actionBarWidgetTheme, outValue, true);
|
||||||
|
if (outValue.resourceId != 0) {
|
||||||
|
//We are unable to test if this is the same as our current theme
|
||||||
|
//so we just wrap it and hope that if the attribute was specified
|
||||||
|
//then the user is intentionally specifying an alternate theme.
|
||||||
|
context = new ContextThemeWrapper(context, outValue.resourceId);
|
||||||
|
}
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionMode startActionMode(com.actionbarsherlock.view.ActionMode.Callback callback) {
|
||||||
|
if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
|
||||||
|
|
||||||
|
if (mActionMode != null) {
|
||||||
|
mActionMode.finish();
|
||||||
|
}
|
||||||
|
ActionModeCallbackWrapper wrapped = null;
|
||||||
|
if (callback != null) {
|
||||||
|
wrapped = new ActionModeCallbackWrapper(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calling this will trigger the callback wrapper's onCreate which
|
||||||
|
//is where we will set the new instance to mActionMode since we need
|
||||||
|
//to pass it through to the sherlock callbacks and the call below
|
||||||
|
//will not have returned yet to store its value.
|
||||||
|
mActivity.startActionMode(wrapped);
|
||||||
|
|
||||||
|
return mActionMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ActionModeCallbackWrapper implements android.view.ActionMode.Callback {
|
||||||
|
private final ActionMode.Callback mCallback;
|
||||||
|
|
||||||
|
public ActionModeCallbackWrapper(ActionMode.Callback callback) {
|
||||||
|
mCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateActionMode(android.view.ActionMode mode, android.view.Menu menu) {
|
||||||
|
//See ActionBarSherlockNative#startActionMode
|
||||||
|
mActionMode = new ActionModeWrapper(mode);
|
||||||
|
|
||||||
|
return mCallback.onCreateActionMode(mActionMode, mActionMode.getMenu());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareActionMode(android.view.ActionMode mode, android.view.Menu menu) {
|
||||||
|
return mCallback.onPrepareActionMode(mActionMode, mActionMode.getMenu());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onActionItemClicked(android.view.ActionMode mode, android.view.MenuItem item) {
|
||||||
|
return mCallback.onActionItemClicked(mActionMode, mActionMode.getMenu().findItem(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyActionMode(android.view.ActionMode mode) {
|
||||||
|
mCallback.onDestroyActionMode(mActionMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ActionModeWrapper extends ActionMode {
|
||||||
|
private final android.view.ActionMode mActionMode;
|
||||||
|
private MenuWrapper mMenu = null;
|
||||||
|
|
||||||
|
ActionModeWrapper(android.view.ActionMode actionMode) {
|
||||||
|
mActionMode = actionMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(CharSequence title) {
|
||||||
|
mActionMode.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(int resId) {
|
||||||
|
mActionMode.setTitle(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSubtitle(CharSequence subtitle) {
|
||||||
|
mActionMode.setSubtitle(subtitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSubtitle(int resId) {
|
||||||
|
mActionMode.setSubtitle(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomView(View view) {
|
||||||
|
mActionMode.setCustomView(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate() {
|
||||||
|
mActionMode.invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void finish() {
|
||||||
|
mActionMode.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuWrapper getMenu() {
|
||||||
|
if (mMenu == null) {
|
||||||
|
mMenu = new MenuWrapper(mActionMode.getMenu());
|
||||||
|
}
|
||||||
|
return mMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitle() {
|
||||||
|
return mActionMode.getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getSubtitle() {
|
||||||
|
return mActionMode.getSubtitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getCustomView() {
|
||||||
|
return mActionMode.getCustomView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuInflater getMenuInflater() {
|
||||||
|
return ActionBarSherlockNative.this.getMenuInflater();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package com.actionbarsherlock.internal;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
|
import com.actionbarsherlock.R;
|
||||||
|
|
||||||
|
public final class ResourcesCompat {
|
||||||
|
//No instances
|
||||||
|
private ResourcesCompat() {}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support implementation of {@code getResources().getBoolean()} that we
|
||||||
|
* can use to simulate filtering based on width and smallest width
|
||||||
|
* qualifiers on pre-3.2.
|
||||||
|
*
|
||||||
|
* @param context Context to load booleans from on 3.2+ and to fetch the
|
||||||
|
* display metrics.
|
||||||
|
* @param id Id of boolean to load.
|
||||||
|
* @return Associated boolean value as reflected by the current display
|
||||||
|
* metrics.
|
||||||
|
*/
|
||||||
|
public static boolean getResources_getBoolean(Context context, int id) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
||||||
|
return context.getResources().getBoolean(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
|
||||||
|
float widthDp = metrics.widthPixels / metrics.density;
|
||||||
|
float heightDp = metrics.heightPixels / metrics.density;
|
||||||
|
float smallestWidthDp = (widthDp < heightDp) ? widthDp : heightDp;
|
||||||
|
|
||||||
|
if (id == R.bool.abs__action_bar_embed_tabs) {
|
||||||
|
if (widthDp >= 480) {
|
||||||
|
return true; //values-w480dp
|
||||||
|
}
|
||||||
|
return false; //values
|
||||||
|
}
|
||||||
|
if (id == R.bool.abs__split_action_bar_is_narrow) {
|
||||||
|
if (widthDp >= 480) {
|
||||||
|
return false; //values-w480dp
|
||||||
|
}
|
||||||
|
return true; //values
|
||||||
|
}
|
||||||
|
if (id == R.bool.abs__action_bar_expanded_action_views_exclusive) {
|
||||||
|
if (smallestWidthDp >= 600) {
|
||||||
|
return false; //values-sw600dp
|
||||||
|
}
|
||||||
|
return true; //values
|
||||||
|
}
|
||||||
|
if (id == R.bool.abs__config_allowActionMenuItemTextWithIcon) {
|
||||||
|
if (widthDp >= 480) {
|
||||||
|
return true; //values-w480dp
|
||||||
|
}
|
||||||
|
return false; //values
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IllegalArgumentException("Unknown boolean resource ID " + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Support implementation of {@code getResources().getInteger()} that we
|
||||||
|
* can use to simulate filtering based on width qualifiers on pre-3.2.
|
||||||
|
*
|
||||||
|
* @param context Context to load integers from on 3.2+ and to fetch the
|
||||||
|
* display metrics.
|
||||||
|
* @param id Id of integer to load.
|
||||||
|
* @return Associated integer value as reflected by the current display
|
||||||
|
* metrics.
|
||||||
|
*/
|
||||||
|
public static int getResources_getInteger(Context context, int id) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
||||||
|
return context.getResources().getInteger(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
|
||||||
|
float widthDp = metrics.widthPixels / metrics.density;
|
||||||
|
|
||||||
|
if (id == R.integer.abs__max_action_buttons) {
|
||||||
|
if (widthDp >= 600) {
|
||||||
|
return 5; //values-w600dp
|
||||||
|
}
|
||||||
|
if (widthDp >= 500) {
|
||||||
|
return 4; //values-w500dp
|
||||||
|
}
|
||||||
|
if (widthDp >= 360) {
|
||||||
|
return 3; //values-w360dp
|
||||||
|
}
|
||||||
|
return 2; //values
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IllegalArgumentException("Unknown integer resource ID " + id);
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@ import android.content.res.Resources;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.ContextThemeWrapper;
|
import android.view.ContextThemeWrapper;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@ -35,6 +36,7 @@ import android.view.accessibility.AccessibilityEvent;
|
|||||||
import android.widget.SpinnerAdapter;
|
import android.widget.SpinnerAdapter;
|
||||||
import com.actionbarsherlock.R;
|
import com.actionbarsherlock.R;
|
||||||
import com.actionbarsherlock.app.ActionBar;
|
import com.actionbarsherlock.app.ActionBar;
|
||||||
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
import com.actionbarsherlock.internal.nineoldandroids.animation.Animator;
|
import com.actionbarsherlock.internal.nineoldandroids.animation.Animator;
|
||||||
import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorListenerAdapter;
|
import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorListenerAdapter;
|
||||||
import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorSet;
|
import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorSet;
|
||||||
@ -43,7 +45,6 @@ import com.actionbarsherlock.internal.nineoldandroids.animation.Animator.Animato
|
|||||||
import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout;
|
import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout;
|
||||||
import com.actionbarsherlock.internal.view.menu.MenuBuilder;
|
import com.actionbarsherlock.internal.view.menu.MenuBuilder;
|
||||||
import com.actionbarsherlock.internal.view.menu.MenuPopupHelper;
|
import com.actionbarsherlock.internal.view.menu.MenuPopupHelper;
|
||||||
import com.actionbarsherlock.internal.view.menu.MenuPresenter;
|
|
||||||
import com.actionbarsherlock.internal.view.menu.SubMenuBuilder;
|
import com.actionbarsherlock.internal.view.menu.SubMenuBuilder;
|
||||||
import com.actionbarsherlock.internal.widget.ActionBarContainer;
|
import com.actionbarsherlock.internal.widget.ActionBarContainer;
|
||||||
import com.actionbarsherlock.internal.widget.ActionBarContextView;
|
import com.actionbarsherlock.internal.widget.ActionBarContextView;
|
||||||
@ -53,6 +54,7 @@ import com.actionbarsherlock.view.ActionMode;
|
|||||||
import com.actionbarsherlock.view.Menu;
|
import com.actionbarsherlock.view.Menu;
|
||||||
import com.actionbarsherlock.view.MenuInflater;
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ActionBarImpl is the ActionBar implementation used
|
* ActionBarImpl is the ActionBar implementation used
|
||||||
@ -66,7 +68,7 @@ public class ActionBarImpl extends ActionBar {
|
|||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Context mThemedContext;
|
private Context mThemedContext;
|
||||||
//UNUSED private Activity mActivity;
|
private Activity mActivity;
|
||||||
//UNUSED private Dialog mDialog;
|
//UNUSED private Dialog mDialog;
|
||||||
|
|
||||||
private ActionBarContainer mContainerView;
|
private ActionBarContainer mContainerView;
|
||||||
@ -131,7 +133,7 @@ public class ActionBarImpl extends ActionBar {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public ActionBarImpl(Activity activity, int features) {
|
public ActionBarImpl(Activity activity, int features) {
|
||||||
//UNUSED mActivity = activity;
|
mActivity = activity;
|
||||||
Window window = activity.getWindow();
|
Window window = activity.getWindow();
|
||||||
View decor = window.getDecorView();
|
View decor = window.getDecorView();
|
||||||
init(decor);
|
init(decor);
|
||||||
@ -168,20 +170,14 @@ public class ActionBarImpl extends ActionBar {
|
|||||||
|
|
||||||
// Older apps get the home button interaction enabled by default.
|
// Older apps get the home button interaction enabled by default.
|
||||||
// Newer apps need to enable it explicitly.
|
// Newer apps need to enable it explicitly.
|
||||||
//setHomeButtonEnabled(mContext.getApplicationInfo().targetSdkVersion < 14);
|
setHomeButtonEnabled(mContext.getApplicationInfo().targetSdkVersion < 14);
|
||||||
// We're all new brotha! This. Is. ActionBarSherlock!
|
|
||||||
setHomeButtonEnabled(false);
|
|
||||||
|
|
||||||
setHasEmbeddedTabs(mContext.getResources().getBoolean(
|
setHasEmbeddedTabs(getResources_getBoolean(mContext,
|
||||||
R.bool.abs__action_bar_embed_tabs));
|
R.bool.abs__action_bar_embed_tabs));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMenu(Menu menu, MenuPresenter.Callback cb) {
|
|
||||||
mActionView.setMenu(menu, cb);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
setHasEmbeddedTabs(mContext.getResources().getBoolean(
|
setHasEmbeddedTabs(getResources_getBoolean(mContext,
|
||||||
R.bool.abs__action_bar_embed_tabs));
|
R.bool.abs__action_bar_embed_tabs));
|
||||||
|
|
||||||
//Manually dispatch a configuration change to the action bar view on pre-2.2
|
//Manually dispatch a configuration change to the action bar view on pre-2.2
|
||||||
@ -509,28 +505,31 @@ public class ActionBarImpl extends ActionBar {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX final FragmentTransaction trans = mActivity.getSupportFragmentManager().beginTransaction()
|
FragmentTransaction trans = null;
|
||||||
.disallowAddToBackStack();*/
|
if (mActivity instanceof SherlockFragmentActivity) {
|
||||||
|
trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction()
|
||||||
|
.disallowAddToBackStack();
|
||||||
|
}
|
||||||
|
|
||||||
if (mSelectedTab == tab) {
|
if (mSelectedTab == tab) {
|
||||||
if (mSelectedTab != null) {
|
if (mSelectedTab != null) {
|
||||||
mSelectedTab.getCallback().onTabReselected(mSelectedTab); //XXX, trans);
|
mSelectedTab.getCallback().onTabReselected(mSelectedTab, trans);
|
||||||
mTabScrollView.animateToTab(tab.getPosition());
|
mTabScrollView.animateToTab(tab.getPosition());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mTabScrollView.setTabSelected(tab != null ? tab.getPosition() : Tab.INVALID_POSITION);
|
mTabScrollView.setTabSelected(tab != null ? tab.getPosition() : Tab.INVALID_POSITION);
|
||||||
if (mSelectedTab != null) {
|
if (mSelectedTab != null) {
|
||||||
mSelectedTab.getCallback().onTabUnselected(mSelectedTab); //XXX, trans);
|
mSelectedTab.getCallback().onTabUnselected(mSelectedTab, trans);
|
||||||
}
|
}
|
||||||
mSelectedTab = (TabImpl) tab;
|
mSelectedTab = (TabImpl) tab;
|
||||||
if (mSelectedTab != null) {
|
if (mSelectedTab != null) {
|
||||||
mSelectedTab.getCallback().onTabSelected(mSelectedTab); //XXX, trans);
|
mSelectedTab.getCallback().onTabSelected(mSelectedTab, trans);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX if (!trans.isEmpty()) {
|
if (trans != null && !trans.isEmpty()) {
|
||||||
trans.commit();
|
trans.commit();
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,468 @@
|
|||||||
|
package com.actionbarsherlock.internal.app;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.SpinnerAdapter;
|
||||||
|
|
||||||
|
import com.actionbarsherlock.app.ActionBar;
|
||||||
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
|
|
||||||
|
public class ActionBarWrapper extends ActionBar implements android.app.ActionBar.OnNavigationListener, android.app.ActionBar.OnMenuVisibilityListener {
|
||||||
|
private final Activity mActivity;
|
||||||
|
private final android.app.ActionBar mActionBar;
|
||||||
|
private ActionBar.OnNavigationListener mNavigationListener;
|
||||||
|
private Set<OnMenuVisibilityListener> mMenuVisibilityListeners = new HashSet<OnMenuVisibilityListener>(1);
|
||||||
|
private FragmentTransaction mFragmentTransaction;
|
||||||
|
|
||||||
|
|
||||||
|
public ActionBarWrapper(Activity activity) {
|
||||||
|
mActivity = activity;
|
||||||
|
mActionBar = activity.getActionBar();
|
||||||
|
if (mActionBar != null) {
|
||||||
|
mActionBar.addOnMenuVisibilityListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHomeButtonEnabled(boolean enabled) {
|
||||||
|
mActionBar.setHomeButtonEnabled(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Context getThemedContext() {
|
||||||
|
return mActionBar.getThemedContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomView(View view) {
|
||||||
|
mActionBar.setCustomView(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomView(View view, LayoutParams layoutParams) {
|
||||||
|
android.app.ActionBar.LayoutParams lp = new android.app.ActionBar.LayoutParams(layoutParams);
|
||||||
|
lp.gravity = layoutParams.gravity;
|
||||||
|
lp.bottomMargin = layoutParams.bottomMargin;
|
||||||
|
lp.topMargin = layoutParams.topMargin;
|
||||||
|
lp.leftMargin = layoutParams.leftMargin;
|
||||||
|
lp.rightMargin = layoutParams.rightMargin;
|
||||||
|
mActionBar.setCustomView(view, lp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCustomView(int resId) {
|
||||||
|
mActionBar.setCustomView(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIcon(int resId) {
|
||||||
|
mActionBar.setIcon(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIcon(Drawable icon) {
|
||||||
|
mActionBar.setIcon(icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLogo(int resId) {
|
||||||
|
mActionBar.setLogo(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLogo(Drawable logo) {
|
||||||
|
mActionBar.setLogo(logo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback) {
|
||||||
|
mNavigationListener = callback;
|
||||||
|
mActionBar.setListNavigationCallbacks(adapter, (callback != null) ? this : null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
|
||||||
|
//This should never be a NullPointerException since we only set
|
||||||
|
//ourselves as the listener when the callback is not null.
|
||||||
|
return mNavigationListener.onNavigationItemSelected(itemPosition, itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSelectedNavigationItem(int position) {
|
||||||
|
mActionBar.setSelectedNavigationItem(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSelectedNavigationIndex() {
|
||||||
|
return mActionBar.getSelectedNavigationIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getNavigationItemCount() {
|
||||||
|
return mActionBar.getNavigationItemCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(CharSequence title) {
|
||||||
|
mActionBar.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(int resId) {
|
||||||
|
mActionBar.setTitle(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSubtitle(CharSequence subtitle) {
|
||||||
|
mActionBar.setSubtitle(subtitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSubtitle(int resId) {
|
||||||
|
mActionBar.setSubtitle(resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayOptions(int options) {
|
||||||
|
mActionBar.setDisplayOptions(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayOptions(int options, int mask) {
|
||||||
|
mActionBar.setDisplayOptions(options, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayUseLogoEnabled(boolean useLogo) {
|
||||||
|
mActionBar.setDisplayUseLogoEnabled(useLogo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayShowHomeEnabled(boolean showHome) {
|
||||||
|
mActionBar.setDisplayShowHomeEnabled(showHome);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayHomeAsUpEnabled(boolean showHomeAsUp) {
|
||||||
|
mActionBar.setDisplayHomeAsUpEnabled(showHomeAsUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayShowTitleEnabled(boolean showTitle) {
|
||||||
|
mActionBar.setDisplayShowTitleEnabled(showTitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayShowCustomEnabled(boolean showCustom) {
|
||||||
|
mActionBar.setDisplayShowCustomEnabled(showCustom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBackgroundDrawable(Drawable d) {
|
||||||
|
mActionBar.setBackgroundDrawable(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStackedBackgroundDrawable(Drawable d) {
|
||||||
|
mActionBar.setStackedBackgroundDrawable(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSplitBackgroundDrawable(Drawable d) {
|
||||||
|
mActionBar.setSplitBackgroundDrawable(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getCustomView() {
|
||||||
|
return mActionBar.getCustomView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitle() {
|
||||||
|
return mActionBar.getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getSubtitle() {
|
||||||
|
return mActionBar.getSubtitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getNavigationMode() {
|
||||||
|
return mActionBar.getNavigationMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setNavigationMode(int mode) {
|
||||||
|
mActionBar.setNavigationMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDisplayOptions() {
|
||||||
|
return mActionBar.getDisplayOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TabWrapper extends ActionBar.Tab implements android.app.ActionBar.TabListener {
|
||||||
|
final android.app.ActionBar.Tab mNativeTab;
|
||||||
|
private Object mTag;
|
||||||
|
private TabListener mListener;
|
||||||
|
|
||||||
|
public TabWrapper(android.app.ActionBar.Tab nativeTab) {
|
||||||
|
mNativeTab = nativeTab;
|
||||||
|
mNativeTab.setTag(this);
|
||||||
|
mNativeTab.setTabListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getPosition() {
|
||||||
|
return mNativeTab.getPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Drawable getIcon() {
|
||||||
|
return mNativeTab.getIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getText() {
|
||||||
|
return mNativeTab.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setIcon(Drawable icon) {
|
||||||
|
mNativeTab.setIcon(icon);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setIcon(int resId) {
|
||||||
|
mNativeTab.setIcon(resId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setText(CharSequence text) {
|
||||||
|
mNativeTab.setText(text);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setText(int resId) {
|
||||||
|
mNativeTab.setText(resId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setCustomView(View view) {
|
||||||
|
mNativeTab.setCustomView(view);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setCustomView(int layoutResId) {
|
||||||
|
mNativeTab.setCustomView(layoutResId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getCustomView() {
|
||||||
|
return mNativeTab.getCustomView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setTag(Object obj) {
|
||||||
|
mTag = obj;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getTag() {
|
||||||
|
return mTag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setTabListener(TabListener listener) {
|
||||||
|
mListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void select() {
|
||||||
|
mNativeTab.select();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setContentDescription(int resId) {
|
||||||
|
mNativeTab.setContentDescription(resId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab setContentDescription(CharSequence contentDesc) {
|
||||||
|
mNativeTab.setContentDescription(contentDesc);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getContentDescription() {
|
||||||
|
return mNativeTab.getContentDescription();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTabReselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {
|
||||||
|
if (mListener != null) {
|
||||||
|
FragmentTransaction trans = null;
|
||||||
|
if (mActivity instanceof SherlockFragmentActivity) {
|
||||||
|
trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction()
|
||||||
|
.disallowAddToBackStack();
|
||||||
|
}
|
||||||
|
|
||||||
|
mListener.onTabReselected(this, trans);
|
||||||
|
|
||||||
|
if (trans != null && !trans.isEmpty()) {
|
||||||
|
trans.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTabSelected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {
|
||||||
|
if (mListener != null) {
|
||||||
|
|
||||||
|
if (mFragmentTransaction == null && mActivity instanceof SherlockFragmentActivity) {
|
||||||
|
mFragmentTransaction = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction()
|
||||||
|
.disallowAddToBackStack();
|
||||||
|
}
|
||||||
|
|
||||||
|
mListener.onTabSelected(this, mFragmentTransaction);
|
||||||
|
|
||||||
|
if (mFragmentTransaction != null) {
|
||||||
|
if (!mFragmentTransaction.isEmpty()) {
|
||||||
|
mFragmentTransaction.commit();
|
||||||
|
}
|
||||||
|
mFragmentTransaction = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTabUnselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {
|
||||||
|
if (mListener != null) {
|
||||||
|
FragmentTransaction trans = null;
|
||||||
|
if (mActivity instanceof SherlockFragmentActivity) {
|
||||||
|
trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction()
|
||||||
|
.disallowAddToBackStack();
|
||||||
|
mFragmentTransaction = trans;
|
||||||
|
}
|
||||||
|
|
||||||
|
mListener.onTabUnselected(this, trans);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab newTab() {
|
||||||
|
return new TabWrapper(mActionBar.newTab());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTab(Tab tab) {
|
||||||
|
mActionBar.addTab(((TabWrapper)tab).mNativeTab);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTab(Tab tab, boolean setSelected) {
|
||||||
|
mActionBar.addTab(((TabWrapper)tab).mNativeTab, setSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTab(Tab tab, int position) {
|
||||||
|
mActionBar.addTab(((TabWrapper)tab).mNativeTab, position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTab(Tab tab, int position, boolean setSelected) {
|
||||||
|
mActionBar.addTab(((TabWrapper)tab).mNativeTab, position, setSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeTab(Tab tab) {
|
||||||
|
mActionBar.removeTab(((TabWrapper)tab).mNativeTab);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeTabAt(int position) {
|
||||||
|
mActionBar.removeTabAt(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeAllTabs() {
|
||||||
|
mActionBar.removeAllTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void selectTab(Tab tab) {
|
||||||
|
mActionBar.selectTab(((TabWrapper)tab).mNativeTab);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab getSelectedTab() {
|
||||||
|
android.app.ActionBar.Tab selected = mActionBar.getSelectedTab();
|
||||||
|
return (selected != null) ? (Tab)selected.getTag() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tab getTabAt(int index) {
|
||||||
|
android.app.ActionBar.Tab selected = mActionBar.getTabAt(index);
|
||||||
|
return (selected != null) ? (Tab)selected.getTag() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTabCount() {
|
||||||
|
return mActionBar.getTabCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHeight() {
|
||||||
|
return mActionBar.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void show() {
|
||||||
|
mActionBar.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hide() {
|
||||||
|
mActionBar.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isShowing() {
|
||||||
|
return mActionBar.isShowing();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) {
|
||||||
|
mMenuVisibilityListeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeOnMenuVisibilityListener(OnMenuVisibilityListener listener) {
|
||||||
|
mMenuVisibilityListeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMenuVisibilityChanged(boolean isVisible) {
|
||||||
|
for (OnMenuVisibilityListener listener : mMenuVisibilityListeners) {
|
||||||
|
listener.onMenuVisibilityChanged(isVisible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -42,6 +42,7 @@ import android.view.animation.Interpolator;
|
|||||||
* circular dependencies do not make logical sense anyway), circular dependencies
|
* circular dependencies do not make logical sense anyway), circular dependencies
|
||||||
* should be avoided, and the dependency flow of animations should only be in one direction.
|
* should be avoided, and the dependency flow of animations should only be in one direction.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public final class AnimatorSet extends Animator {
|
public final class AnimatorSet extends Animator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -278,7 +279,6 @@ public final class AnimatorSet extends Animator {
|
|||||||
* <p>Note that canceling a <code>AnimatorSet</code> also cancels all of the animations that it
|
* <p>Note that canceling a <code>AnimatorSet</code> also cancels all of the animations that it
|
||||||
* is responsible for.</p>
|
* is responsible for.</p>
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
mTerminated = true;
|
mTerminated = true;
|
||||||
@ -445,7 +445,6 @@ public final class AnimatorSet extends Animator {
|
|||||||
* it is responsible. The details of when exactly those animations are started depends on
|
* it is responsible. The details of when exactly those animations are started depends on
|
||||||
* the dependency relationships that have been set up between the animations.
|
* the dependency relationships that have been set up between the animations.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
mTerminated = false;
|
mTerminated = false;
|
||||||
@ -727,7 +726,6 @@ public final class AnimatorSet extends Animator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
animation.removeListener(this);
|
animation.removeListener(this);
|
||||||
mPlayingSet.remove(animation);
|
mPlayingSet.remove(animation);
|
||||||
@ -949,7 +947,7 @@ public final class AnimatorSet extends Animator {
|
|||||||
public Node clone() {
|
public Node clone() {
|
||||||
try {
|
try {
|
||||||
Node node = (Node) super.clone();
|
Node node = (Node) super.clone();
|
||||||
node.animation = (Animator) animation.clone();
|
node.animation = animation.clone();
|
||||||
return node;
|
return node;
|
||||||
} catch (CloneNotSupportedException e) {
|
} catch (CloneNotSupportedException e) {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
|
@ -31,6 +31,7 @@ import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.FloatKe
|
|||||||
* TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the
|
* TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the
|
||||||
* Object equivalents of these primitive types.</p>
|
* Object equivalents of these primitive types.</p>
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
class FloatKeyframeSet extends KeyframeSet {
|
class FloatKeyframeSet extends KeyframeSet {
|
||||||
private float firstValue;
|
private float firstValue;
|
||||||
private float lastValue;
|
private float lastValue;
|
||||||
|
@ -31,6 +31,7 @@ import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.IntKeyf
|
|||||||
* TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the
|
* TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the
|
||||||
* Object equivalents of these primitive types.</p>
|
* Object equivalents of these primitive types.</p>
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
class IntKeyframeSet extends KeyframeSet {
|
class IntKeyframeSet extends KeyframeSet {
|
||||||
private int firstValue;
|
private int firstValue;
|
||||||
private int lastValue;
|
private int lastValue;
|
||||||
|
@ -35,6 +35,7 @@ import android.view.animation.Interpolator;
|
|||||||
* of {@link TypeEvaluator}), you should stick to using float and int as animations using those
|
* of {@link TypeEvaluator}), you should stick to using float and int as animations using those
|
||||||
* types have lower runtime overhead than other types.</p>
|
* types have lower runtime overhead than other types.</p>
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
public abstract class Keyframe implements Cloneable {
|
public abstract class Keyframe implements Cloneable {
|
||||||
/**
|
/**
|
||||||
* The time at which mValue will hold true.
|
* The time at which mValue will hold true.
|
||||||
|
@ -29,6 +29,7 @@ import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.ObjectK
|
|||||||
* values between those keyframes for a given animation. The class internal to the animation
|
* values between those keyframes for a given animation. The class internal to the animation
|
||||||
* package because it is an implementation detail of how Keyframes are stored and used.
|
* package because it is an implementation detail of how Keyframes are stored and used.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
class KeyframeSet {
|
class KeyframeSet {
|
||||||
|
|
||||||
int mNumKeyframes;
|
int mNumKeyframes;
|
||||||
|
@ -32,6 +32,7 @@ import java.util.ArrayList;
|
|||||||
* @see #setPropertyName(String)
|
* @see #setPropertyName(String)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
public final class ObjectAnimator extends ValueAnimator {
|
public final class ObjectAnimator extends ValueAnimator {
|
||||||
private static final boolean DBG = false;
|
private static final boolean DBG = false;
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|||||||
* animations with ValueAnimator or ObjectAnimator that operate on several different properties
|
* animations with ValueAnimator or ObjectAnimator that operate on several different properties
|
||||||
* in parallel.
|
* in parallel.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
public class PropertyValuesHolder implements Cloneable {
|
public class PropertyValuesHolder implements Cloneable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -255,7 +256,7 @@ public class PropertyValuesHolder implements Cloneable {
|
|||||||
else {
|
else {
|
||||||
PropertyValuesHolder pvh = new PropertyValuesHolder(propertyName);
|
PropertyValuesHolder pvh = new PropertyValuesHolder(propertyName);
|
||||||
pvh.mKeyframeSet = keyframeSet;
|
pvh.mKeyframeSet = keyframeSet;
|
||||||
pvh.mValueType = ((Keyframe)values[0]).getType();
|
pvh.mValueType = values[0].getType();
|
||||||
return pvh;
|
return pvh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -335,9 +336,9 @@ public class PropertyValuesHolder implements Cloneable {
|
|||||||
public void setKeyframes(Keyframe... values) {
|
public void setKeyframes(Keyframe... values) {
|
||||||
int numKeyframes = values.length;
|
int numKeyframes = values.length;
|
||||||
Keyframe keyframes[] = new Keyframe[Math.max(numKeyframes,2)];
|
Keyframe keyframes[] = new Keyframe[Math.max(numKeyframes,2)];
|
||||||
mValueType = ((Keyframe)values[0]).getType();
|
mValueType = values[0].getType();
|
||||||
for (int i = 0; i < numKeyframes; ++i) {
|
for (int i = 0; i < numKeyframes; ++i) {
|
||||||
keyframes[i] = (Keyframe)values[i];
|
keyframes[i] = values[i];
|
||||||
}
|
}
|
||||||
mKeyframeSet = new KeyframeSet(keyframes);
|
mKeyframeSet = new KeyframeSet(keyframes);
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ import java.util.HashMap;
|
|||||||
* out of an animation. This behavior can be changed by calling
|
* out of an animation. This behavior can be changed by calling
|
||||||
* {@link ValueAnimator#setInterpolator(TimeInterpolator)}.</p>
|
* {@link ValueAnimator#setInterpolator(TimeInterpolator)}.</p>
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
public class ValueAnimator extends Animator {
|
public class ValueAnimator extends Animator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -145,8 +146,8 @@ public class ValueAnimator extends Animator {
|
|||||||
new AccelerateDecelerateInterpolator();
|
new AccelerateDecelerateInterpolator();
|
||||||
|
|
||||||
// type evaluators for the primitive types handled by this implementation
|
// type evaluators for the primitive types handled by this implementation
|
||||||
private static final TypeEvaluator sIntEvaluator = new IntEvaluator();
|
//private static final TypeEvaluator sIntEvaluator = new IntEvaluator();
|
||||||
private static final TypeEvaluator sFloatEvaluator = new FloatEvaluator();
|
//private static final TypeEvaluator sFloatEvaluator = new FloatEvaluator();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to indicate whether the animation is currently playing in reverse. This causes the
|
* Used to indicate whether the animation is currently playing in reverse. This causes the
|
||||||
@ -457,7 +458,7 @@ public class ValueAnimator extends Animator {
|
|||||||
mValues = values;
|
mValues = values;
|
||||||
mValuesMap = new HashMap<String, PropertyValuesHolder>(numValues);
|
mValuesMap = new HashMap<String, PropertyValuesHolder>(numValues);
|
||||||
for (int i = 0; i < numValues; ++i) {
|
for (int i = 0; i < numValues; ++i) {
|
||||||
PropertyValuesHolder valuesHolder = (PropertyValuesHolder) values[i];
|
PropertyValuesHolder valuesHolder = values[i];
|
||||||
mValuesMap.put(valuesHolder.getPropertyName(), valuesHolder);
|
mValuesMap.put(valuesHolder.getPropertyName(), valuesHolder);
|
||||||
}
|
}
|
||||||
// New property/values/target should cause re-initialization prior to starting
|
// New property/values/target should cause re-initialization prior to starting
|
||||||
|
@ -22,6 +22,18 @@ public abstract class NineViewGroup extends ViewGroup {
|
|||||||
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibility(int visibility) {
|
||||||
|
if (mProxy != null) {
|
||||||
|
if (visibility == GONE) {
|
||||||
|
clearAnimation();
|
||||||
|
} else if (visibility == VISIBLE) {
|
||||||
|
setAnimation(mProxy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.setVisibility(visibility);
|
||||||
|
}
|
||||||
|
|
||||||
public float getAlpha() {
|
public float getAlpha() {
|
||||||
if (AnimatorProxy.NEEDS_PROXY) {
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
return mProxy.getAlpha();
|
return mProxy.getAlpha();
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package com.actionbarsherlock.internal.nineoldandroids.view.animation;
|
package com.actionbarsherlock.internal.nineoldandroids.view.animation;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.WeakHashMap;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
|
import android.graphics.RectF;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.util.FloatMath;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
import android.view.animation.Transformation;
|
import android.view.animation.Transformation;
|
||||||
@ -9,24 +13,35 @@ import android.view.animation.Transformation;
|
|||||||
public final class AnimatorProxy extends Animation {
|
public final class AnimatorProxy extends Animation {
|
||||||
public static final boolean NEEDS_PROXY = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
|
public static final boolean NEEDS_PROXY = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
|
||||||
|
|
||||||
|
private static final WeakHashMap<View, AnimatorProxy> PROXIES =
|
||||||
|
new WeakHashMap<View, AnimatorProxy>();
|
||||||
|
|
||||||
public static AnimatorProxy wrap(View view) {
|
public static AnimatorProxy wrap(View view) {
|
||||||
return new AnimatorProxy(view);
|
AnimatorProxy proxy = PROXIES.get(view);
|
||||||
|
if (proxy == null) {
|
||||||
|
proxy = new AnimatorProxy(view);
|
||||||
|
PROXIES.put(view, proxy);
|
||||||
|
}
|
||||||
|
return proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final View mView;
|
private final WeakReference<View> mView;
|
||||||
|
|
||||||
private float mAlpha = 1f;
|
private float mAlpha = 1;
|
||||||
private float mTranslationX = 0f;
|
private float mScaleX = 1;
|
||||||
private float mTranslationY = 0f;
|
private float mScaleY = 1;
|
||||||
private float mScaleX = 1f;
|
private float mTranslationX;
|
||||||
private float mScaleY = 1f;
|
private float mTranslationY;
|
||||||
|
|
||||||
|
private final RectF mBefore = new RectF();
|
||||||
|
private final RectF mAfter = new RectF();
|
||||||
|
private final Matrix mTempMatrix = new Matrix();
|
||||||
|
|
||||||
private AnimatorProxy(View view) {
|
private AnimatorProxy(View view) {
|
||||||
super();
|
|
||||||
setDuration(0); //perform transformation immediately
|
setDuration(0); //perform transformation immediately
|
||||||
setFillAfter(true); //persist transformation beyond duration
|
setFillAfter(true); //persist transformation beyond duration
|
||||||
view.setAnimation(this);
|
view.setAnimation(this);
|
||||||
mView = view;
|
mView = new WeakReference<View>(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getAlpha() {
|
public float getAlpha() {
|
||||||
@ -35,34 +50,20 @@ public final class AnimatorProxy extends Animation {
|
|||||||
public void setAlpha(float alpha) {
|
public void setAlpha(float alpha) {
|
||||||
if (mAlpha != alpha) {
|
if (mAlpha != alpha) {
|
||||||
mAlpha = alpha;
|
mAlpha = alpha;
|
||||||
invalidateParent();
|
View view = mView.get();
|
||||||
}
|
if (view != null) {
|
||||||
}
|
view.invalidate();
|
||||||
public float getTranslationX() {
|
}
|
||||||
return mTranslationX;
|
|
||||||
}
|
|
||||||
public void setTranslationX(float translationX) {
|
|
||||||
if (mTranslationX != translationX) {
|
|
||||||
mTranslationX = translationX;
|
|
||||||
invalidateParent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public float getTranslationY() {
|
|
||||||
return mTranslationY;
|
|
||||||
}
|
|
||||||
public void setTranslationY(float translationY) {
|
|
||||||
if (mTranslationY != translationY) {
|
|
||||||
mTranslationY = translationY;
|
|
||||||
invalidateParent();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public float getScaleX() {
|
public float getScaleX() {
|
||||||
return mScaleX;
|
return mScaleX;
|
||||||
}
|
}
|
||||||
public void setScaleX(float scale) {
|
public void setScaleX(float scaleX) {
|
||||||
if (mScaleX != scale) {
|
if (mScaleX != scaleX) {
|
||||||
mScaleX = scale;
|
prepareForUpdate();
|
||||||
invalidateParent();
|
mScaleX = scaleX;
|
||||||
|
invalidateAfterUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public float getScaleY() {
|
public float getScaleY() {
|
||||||
@ -70,22 +71,135 @@ public final class AnimatorProxy extends Animation {
|
|||||||
}
|
}
|
||||||
public void setScaleY(float scaleY) {
|
public void setScaleY(float scaleY) {
|
||||||
if (mScaleY != scaleY) {
|
if (mScaleY != scaleY) {
|
||||||
|
prepareForUpdate();
|
||||||
mScaleY = scaleY;
|
mScaleY = scaleY;
|
||||||
invalidateParent();
|
invalidateAfterUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int getScrollX() {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return view.getScrollX();
|
||||||
|
}
|
||||||
|
public void setScrollX(int value) {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view != null) {
|
||||||
|
view.scrollTo(value, view.getScrollY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int getScrollY() {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return view.getScrollY();
|
||||||
|
}
|
||||||
|
public void setScrollY(int value) {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view != null) {
|
||||||
|
view.scrollTo(view.getScrollY(), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invalidateParent() {
|
public float getTranslationX() {
|
||||||
//TODO only invalidate what we need to change
|
return mTranslationX;
|
||||||
((View)mView.getParent()).invalidate();
|
}
|
||||||
|
public void setTranslationX(float translationX) {
|
||||||
|
if (mTranslationX != translationX) {
|
||||||
|
prepareForUpdate();
|
||||||
|
mTranslationX = translationX;
|
||||||
|
invalidateAfterUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public float getTranslationY() {
|
||||||
|
return mTranslationY;
|
||||||
|
}
|
||||||
|
public void setTranslationY(float translationY) {
|
||||||
|
if (mTranslationY != translationY) {
|
||||||
|
prepareForUpdate();
|
||||||
|
mTranslationY = translationY;
|
||||||
|
invalidateAfterUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void prepareForUpdate() {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view != null) {
|
||||||
|
computeRect(mBefore, view);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void invalidateAfterUpdate() {
|
||||||
|
View view = mView.get();
|
||||||
|
if (view == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
View parent = (View)view.getParent();
|
||||||
|
if (parent == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final RectF after = mAfter;
|
||||||
|
computeRect(after, view);
|
||||||
|
after.union(mBefore);
|
||||||
|
|
||||||
|
parent.invalidate(
|
||||||
|
(int) FloatMath.floor(after.left),
|
||||||
|
(int) FloatMath.floor(after.top),
|
||||||
|
(int) FloatMath.ceil(after.right),
|
||||||
|
(int) FloatMath.ceil(after.bottom));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void computeRect(final RectF r, View view) {
|
||||||
|
// compute current rectangle according to matrix transformation
|
||||||
|
final float w = view.getWidth();
|
||||||
|
final float h = view.getHeight();
|
||||||
|
|
||||||
|
// use a rectangle at 0,0 to make sure we don't run into issues with scaling
|
||||||
|
r.set(0, 0, w, h);
|
||||||
|
|
||||||
|
final Matrix m = mTempMatrix;
|
||||||
|
m.reset();
|
||||||
|
transformMatrix(m, view);
|
||||||
|
mTempMatrix.mapRect(r);
|
||||||
|
|
||||||
|
r.offset(view.getLeft(), view.getTop());
|
||||||
|
|
||||||
|
// Straighten coords if rotations flipped them
|
||||||
|
if (r.right < r.left) {
|
||||||
|
final float f = r.right;
|
||||||
|
r.right = r.left;
|
||||||
|
r.left = f;
|
||||||
|
}
|
||||||
|
if (r.bottom < r.top) {
|
||||||
|
final float f = r.top;
|
||||||
|
r.top = r.bottom;
|
||||||
|
r.bottom = f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void transformMatrix(Matrix m, View view) {
|
||||||
|
final float w = view.getWidth();
|
||||||
|
final float h = view.getHeight();
|
||||||
|
|
||||||
|
final float sX = mScaleX;
|
||||||
|
final float sY = mScaleY;
|
||||||
|
if ((sX != 1.0f) || (sY != 1.0f)) {
|
||||||
|
final float deltaSX = ((sX * w) - w) / 2f;
|
||||||
|
final float deltaSY = ((sY * h) - h) / 2f;
|
||||||
|
m.postScale(sX, sY);
|
||||||
|
m.postTranslate(-deltaSX, -deltaSY);
|
||||||
|
}
|
||||||
|
m.postTranslate(mTranslationX, mTranslationY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyTransformation(float interpolatedTime, Transformation t) {
|
protected void applyTransformation(float interpolatedTime, Transformation t) {
|
||||||
t.setAlpha(mAlpha);
|
View view = mView.get();
|
||||||
|
if (view != null) {
|
||||||
final Matrix m = t.getMatrix();
|
t.setAlpha(mAlpha);
|
||||||
m.postTranslate(mTranslationX, mTranslationY);
|
transformMatrix(t.getMatrix(), view);
|
||||||
m.postScale(mScaleX, mScaleY);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,18 @@ public class NineFrameLayout extends FrameLayout {
|
|||||||
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibility(int visibility) {
|
||||||
|
if (mProxy != null) {
|
||||||
|
if (visibility == GONE) {
|
||||||
|
clearAnimation();
|
||||||
|
} else if (visibility == VISIBLE) {
|
||||||
|
setAnimation(mProxy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.setVisibility(visibility);
|
||||||
|
}
|
||||||
|
|
||||||
public float getAlpha() {
|
public float getAlpha() {
|
||||||
if (AnimatorProxy.NEEDS_PROXY) {
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
return mProxy.getAlpha();
|
return mProxy.getAlpha();
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.actionbarsherlock.internal.nineoldandroids.widget;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.widget.HorizontalScrollView;
|
||||||
|
import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy;
|
||||||
|
|
||||||
|
public class NineHorizontalScrollView extends HorizontalScrollView {
|
||||||
|
private final AnimatorProxy mProxy;
|
||||||
|
|
||||||
|
public NineHorizontalScrollView(Context context) {
|
||||||
|
super(context);
|
||||||
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibility(int visibility) {
|
||||||
|
if (mProxy != null) {
|
||||||
|
if (visibility == GONE) {
|
||||||
|
clearAnimation();
|
||||||
|
} else if (visibility == VISIBLE) {
|
||||||
|
setAnimation(mProxy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.setVisibility(visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getAlpha() {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
return mProxy.getAlpha();
|
||||||
|
} else {
|
||||||
|
return super.getAlpha();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setAlpha(float alpha) {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
mProxy.setAlpha(alpha);
|
||||||
|
} else {
|
||||||
|
super.setAlpha(alpha);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
package com.actionbarsherlock.internal.nineoldandroids.widget;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy;
|
||||||
|
|
||||||
|
public class NineLinearLayout extends LinearLayout {
|
||||||
|
private final AnimatorProxy mProxy;
|
||||||
|
|
||||||
|
public NineLinearLayout(Context context) {
|
||||||
|
super(context);
|
||||||
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
|
}
|
||||||
|
public NineLinearLayout(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
|
}
|
||||||
|
public NineLinearLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||||
|
super(context, attrs, defStyle);
|
||||||
|
mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setVisibility(int visibility) {
|
||||||
|
if (mProxy != null) {
|
||||||
|
if (visibility == GONE) {
|
||||||
|
clearAnimation();
|
||||||
|
} else if (visibility == VISIBLE) {
|
||||||
|
setAnimation(mProxy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.setVisibility(visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getAlpha() {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
return mProxy.getAlpha();
|
||||||
|
} else {
|
||||||
|
return super.getAlpha();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setAlpha(float alpha) {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
mProxy.setAlpha(alpha);
|
||||||
|
} else {
|
||||||
|
super.setAlpha(alpha);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public float getTranslationX() {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
return mProxy.getTranslationX();
|
||||||
|
} else {
|
||||||
|
return super.getTranslationX();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setTranslationX(float translationX) {
|
||||||
|
if (AnimatorProxy.NEEDS_PROXY) {
|
||||||
|
mProxy.setTranslationX(translationX);
|
||||||
|
} else {
|
||||||
|
super.setTranslationX(translationX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.actionbarsherlock.internal.view;
|
||||||
|
|
||||||
|
import com.actionbarsherlock.internal.view.menu.SubMenuWrapper;
|
||||||
|
import com.actionbarsherlock.view.ActionProvider;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class ActionProviderWrapper extends android.view.ActionProvider {
|
||||||
|
private final ActionProvider mProvider;
|
||||||
|
|
||||||
|
|
||||||
|
public ActionProviderWrapper(ActionProvider provider) {
|
||||||
|
super(null/*TODO*/); //XXX this *should* be unused
|
||||||
|
mProvider = provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ActionProvider unwrap() {
|
||||||
|
return mProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateActionView() {
|
||||||
|
return mProvider.onCreateActionView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSubMenu() {
|
||||||
|
return mProvider.hasSubMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPerformDefaultAction() {
|
||||||
|
return mProvider.onPerformDefaultAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPrepareSubMenu(android.view.SubMenu subMenu) {
|
||||||
|
mProvider.onPrepareSubMenu(new SubMenuWrapper(subMenu));
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ package com.actionbarsherlock.internal.view.menu;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.TypedArray;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@ -29,7 +29,6 @@ import android.view.Gravity;
|
|||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -37,6 +36,9 @@ import android.widget.Toast;
|
|||||||
import com.actionbarsherlock.R;
|
import com.actionbarsherlock.R;
|
||||||
import com.actionbarsherlock.internal.view.View_HasStateListenerSupport;
|
import com.actionbarsherlock.internal.view.View_HasStateListenerSupport;
|
||||||
import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener;
|
import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener;
|
||||||
|
import com.actionbarsherlock.internal.widget.CapitalizingButton;
|
||||||
|
|
||||||
|
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
@ -51,10 +53,10 @@ public class ActionMenuItemView extends LinearLayout
|
|||||||
private MenuBuilder.ItemInvoker mItemInvoker;
|
private MenuBuilder.ItemInvoker mItemInvoker;
|
||||||
|
|
||||||
private ImageButton mImageButton;
|
private ImageButton mImageButton;
|
||||||
private Button mTextButton;
|
private CapitalizingButton mTextButton;
|
||||||
private boolean mAllowTextWithIcon;
|
private boolean mAllowTextWithIcon;
|
||||||
//UNUSED private boolean mShowTextAllCaps;
|
|
||||||
private boolean mExpandedFormat;
|
private boolean mExpandedFormat;
|
||||||
|
private int mMinWidth;
|
||||||
|
|
||||||
private final Set<View_OnAttachStateChangeListener> mListeners = new HashSet<View_OnAttachStateChangeListener>();
|
private final Set<View_OnAttachStateChangeListener> mListeners = new HashSet<View_OnAttachStateChangeListener>();
|
||||||
|
|
||||||
@ -69,10 +71,13 @@ public class ActionMenuItemView extends LinearLayout
|
|||||||
public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) {
|
public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) {
|
||||||
//TODO super(context, attrs, defStyle);
|
//TODO super(context, attrs, defStyle);
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
final Resources res = context.getResources();
|
mAllowTextWithIcon = getResources_getBoolean(context,
|
||||||
mAllowTextWithIcon = res.getBoolean(
|
|
||||||
R.bool.abs__config_allowActionMenuItemTextWithIcon);
|
R.bool.abs__config_allowActionMenuItemTextWithIcon);
|
||||||
//UNUSED mShowTextAllCaps = res.getBoolean(R.bool.abs__config_actionMenuItemAllCaps);
|
TypedArray a = context.obtainStyledAttributes(attrs,
|
||||||
|
R.styleable.SherlockActionMenuItemView, 0, 0);
|
||||||
|
mMinWidth = a.getDimensionPixelSize(
|
||||||
|
R.styleable.SherlockActionMenuItemView_android_minWidth, 0);
|
||||||
|
a.recycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -105,7 +110,7 @@ public class ActionMenuItemView extends LinearLayout
|
|||||||
public void onFinishInflate() {
|
public void onFinishInflate() {
|
||||||
|
|
||||||
mImageButton = (ImageButton) findViewById(R.id.abs__imageButton);
|
mImageButton = (ImageButton) findViewById(R.id.abs__imageButton);
|
||||||
mTextButton = (Button) findViewById(R.id.abs__textButton);
|
mTextButton = (CapitalizingButton) findViewById(R.id.abs__textButton);
|
||||||
mImageButton.setOnClickListener(this);
|
mImageButton.setOnClickListener(this);
|
||||||
mTextButton.setOnClickListener(this);
|
mTextButton.setOnClickListener(this);
|
||||||
mImageButton.setOnLongClickListener(this);
|
mImageButton.setOnLongClickListener(this);
|
||||||
@ -196,7 +201,7 @@ public class ActionMenuItemView extends LinearLayout
|
|||||||
public void setTitle(CharSequence title) {
|
public void setTitle(CharSequence title) {
|
||||||
mTitle = title;
|
mTitle = title;
|
||||||
|
|
||||||
mTextButton.setText(mTitle);
|
mTextButton.setTextCompat(mTitle);
|
||||||
|
|
||||||
setContentDescription(mTitle);
|
setContentDescription(mTitle);
|
||||||
updateTextButtonVisibility();
|
updateTextButtonVisibility();
|
||||||
@ -270,4 +275,21 @@ public class ActionMenuItemView extends LinearLayout
|
|||||||
cheatSheet.show();
|
cheatSheet.show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||||
|
|
||||||
|
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
||||||
|
final int specSize = MeasureSpec.getSize(widthMeasureSpec);
|
||||||
|
final int oldMeasuredWidth = getMeasuredWidth();
|
||||||
|
final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth)
|
||||||
|
: mMinWidth;
|
||||||
|
|
||||||
|
if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) {
|
||||||
|
// Remeasure at exactly the minimum width.
|
||||||
|
super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY),
|
||||||
|
heightMeasureSpec);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
|
|
||||||
package com.actionbarsherlock.internal.view.menu;
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
|
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getInteger;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
@ -34,7 +34,6 @@ import android.view.View.MeasureSpec;
|
|||||||
import android.view.ViewConfiguration;
|
import android.view.ViewConfiguration;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
|
||||||
import com.actionbarsherlock.R;
|
import com.actionbarsherlock.R;
|
||||||
import com.actionbarsherlock.internal.view.View_HasStateListenerSupport;
|
import com.actionbarsherlock.internal.view.View_HasStateListenerSupport;
|
||||||
import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener;
|
import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener;
|
||||||
@ -88,7 +87,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
|
|
||||||
if (!mReserveOverflowSet) {
|
if (!mReserveOverflowSet) {
|
||||||
mReserveOverflow = reserveOverflow(mContext);
|
mReserveOverflow = reserveOverflow(mContext);
|
||||||
mReserveOverflowSet = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mWidthLimitSet) {
|
if (!mWidthLimitSet) {
|
||||||
@ -97,7 +95,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
|
|
||||||
// Measure for initial configuration
|
// Measure for initial configuration
|
||||||
if (!mMaxItemsSet) {
|
if (!mMaxItemsSet) {
|
||||||
mMaxItems = res.getInteger(R.integer.abs__max_action_buttons);
|
mMaxItems = getResources_getInteger(context, R.integer.abs__max_action_buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
int width = mWidthLimit;
|
int width = mWidthLimit;
|
||||||
@ -132,13 +130,19 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
|
||||||
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB);
|
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB);
|
||||||
} else {
|
} else {
|
||||||
return !ViewConfiguration.get(context).hasPermanentMenuKey();
|
return !HasPermanentMenuKey.get(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class HasPermanentMenuKey {
|
||||||
|
public static boolean get(Context context) {
|
||||||
|
return ViewConfiguration.get(context).hasPermanentMenuKey();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
if (!mMaxItemsSet) {
|
if (!mMaxItemsSet) {
|
||||||
mMaxItems = mContext.getResources().getInteger(
|
mMaxItems = getResources_getInteger(mContext,
|
||||||
R.integer.abs__max_action_buttons);
|
R.integer.abs__max_action_buttons);
|
||||||
if (mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.onItemsChanged(true);
|
mMenu.onItemsChanged(true);
|
||||||
@ -324,6 +328,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
public boolean hideOverflowMenu() {
|
public boolean hideOverflowMenu() {
|
||||||
if (mPostedOpenRunnable != null && mMenuView != null) {
|
if (mPostedOpenRunnable != null && mMenuView != null) {
|
||||||
((View) mMenuView).removeCallbacks(mPostedOpenRunnable);
|
((View) mMenuView).removeCallbacks(mPostedOpenRunnable);
|
||||||
|
mPostedOpenRunnable = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,6 +685,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class PopupPresenterCallback implements MenuPresenter.Callback {
|
private class PopupPresenterCallback implements MenuPresenter.Callback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOpenSubMenu(MenuBuilder subMenu) {
|
public boolean onOpenSubMenu(MenuBuilder subMenu) {
|
||||||
if (subMenu == null) return false;
|
if (subMenu == null) return false;
|
||||||
@ -705,10 +711,11 @@ public class ActionMenuPresenter extends BaseMenuPresenter
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
mMenu.changeMenuMode();
|
mMenu.changeMenuMode();
|
||||||
if (mPopup.tryShow()) {
|
final View menuView = (View) mMenuView;
|
||||||
|
if (menuView != null && menuView.getWindowToken() != null && mPopup.tryShow()) {
|
||||||
mOverflowPopup = mPopup;
|
mOverflowPopup = mPopup;
|
||||||
mPostedOpenRunnable = null;
|
|
||||||
}
|
}
|
||||||
|
mPostedOpenRunnable = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,22 +15,24 @@
|
|||||||
*/
|
*/
|
||||||
package com.actionbarsherlock.internal.view.menu;
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
import com.actionbarsherlock.internal.widget.IcsLinearLayout;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.Canvas;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import com.actionbarsherlock.internal.widget.IcsLinearLayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemInvoker, MenuView {
|
public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemInvoker, MenuView {
|
||||||
//UNUSED private static final String TAG = "ActionMenuView";
|
//UNUSED private static final String TAG = "ActionMenuView";
|
||||||
|
private static final boolean IS_FROYO = Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO;
|
||||||
|
|
||||||
static final int MIN_CELL_SIZE = 56; // dips
|
static final int MIN_CELL_SIZE = 56; // dips
|
||||||
static final int GENERATED_ITEM_PADDING = 4; // dips
|
static final int GENERATED_ITEM_PADDING = 4; // dips
|
||||||
@ -45,6 +47,8 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
private int mGeneratedItemPadding;
|
private int mGeneratedItemPadding;
|
||||||
//UNUSED private int mMeasuredExtraWidth;
|
//UNUSED private int mMeasuredExtraWidth;
|
||||||
|
|
||||||
|
private boolean mFirst = true;
|
||||||
|
|
||||||
public ActionMenuView(Context context) {
|
public ActionMenuView(Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
}
|
}
|
||||||
@ -67,9 +71,8 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
|
if (IS_FROYO) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
//TODO figure out a way to call this pre-2.2
|
|
||||||
}
|
}
|
||||||
mPresenter.updateMenuView(false);
|
mPresenter.updateMenuView(false);
|
||||||
|
|
||||||
@ -79,6 +82,19 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDraw(Canvas canvas) {
|
||||||
|
//Need to trigger a relayout since we may have been added extremely
|
||||||
|
//late in the initial rendering (e.g., when contained in a ViewPager).
|
||||||
|
//See: https://github.com/JakeWharton/ActionBarSherlock/issues/272
|
||||||
|
if (!IS_FROYO && mFirst) {
|
||||||
|
mFirst = false;
|
||||||
|
requestLayout();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
super.onDraw(canvas);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
// If we've been given an exact size to match, apply special formatting during layout.
|
// If we've been given an exact size to match, apply special formatting during layout.
|
||||||
@ -369,7 +385,7 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
|
|
||||||
final int childCount = getChildCount();
|
final int childCount = getChildCount();
|
||||||
final int midVertical = (top + bottom) / 2;
|
final int midVertical = (top + bottom) / 2;
|
||||||
final int dividerWidth = getDividerWidth();
|
final int dividerWidth = 0;//getDividerWidth();
|
||||||
int overflowWidth = 0;
|
int overflowWidth = 0;
|
||||||
//UNUSED int nonOverflowWidth = 0;
|
//UNUSED int nonOverflowWidth = 0;
|
||||||
int nonOverflowCount = 0;
|
int nonOverflowCount = 0;
|
||||||
@ -401,9 +417,9 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
final int size = v.getMeasuredWidth() + p.leftMargin + p.rightMargin;
|
final int size = v.getMeasuredWidth() + p.leftMargin + p.rightMargin;
|
||||||
//UNUSED nonOverflowWidth += size;
|
//UNUSED nonOverflowWidth += size;
|
||||||
widthRemaining -= size;
|
widthRemaining -= size;
|
||||||
if (hasDividerBeforeChildAt(i)) {
|
//if (hasDividerBeforeChildAt(i)) {
|
||||||
//UNUSED nonOverflowWidth += dividerWidth;
|
//UNUSED nonOverflowWidth += dividerWidth;
|
||||||
}
|
//}
|
||||||
nonOverflowCount++;
|
nonOverflowCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -502,7 +518,7 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
mMenu = menu;
|
mMenu = menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
//@Override
|
||||||
protected boolean hasDividerBeforeChildAt(int childIndex) {
|
protected boolean hasDividerBeforeChildAt(int childIndex) {
|
||||||
final View childBefore = getChildAt(childIndex - 1);
|
final View childBefore = getChildAt(childIndex - 1);
|
||||||
final View child = getChildAt(childIndex);
|
final View child = getChildAt(childIndex);
|
||||||
@ -525,7 +541,7 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
public boolean needsDividerAfter();
|
public boolean needsDividerAfter();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class LayoutParams extends IcsLinearLayout.LayoutParams {
|
public static class LayoutParams extends LinearLayout.LayoutParams {
|
||||||
public boolean isOverflowButton;
|
public boolean isOverflowButton;
|
||||||
public int cellsUsed;
|
public int cellsUsed;
|
||||||
public int extraPixels;
|
public int extraPixels;
|
||||||
@ -539,7 +555,7 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LayoutParams(LayoutParams other) {
|
public LayoutParams(LayoutParams other) {
|
||||||
super((IcsLinearLayout.LayoutParams) other);
|
super((LinearLayout.LayoutParams) other);
|
||||||
isOverflowButton = other.isOverflowButton;
|
isOverflowButton = other.isOverflowButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,19 +16,21 @@
|
|||||||
|
|
||||||
package com.actionbarsherlock.internal.view.menu;
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for MenuPresenters that have a consistent container view and item
|
* Base class for MenuPresenters that have a consistent container view and item
|
||||||
* views. Behaves similarly to an AdapterView in that existing item views will
|
* views. Behaves similarly to an AdapterView in that existing item views will
|
||||||
* be reused if possible when items change.
|
* be reused if possible when items change.
|
||||||
*/
|
*/
|
||||||
public abstract class BaseMenuPresenter implements MenuPresenter {
|
public abstract class BaseMenuPresenter implements MenuPresenter {
|
||||||
|
private static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
|
||||||
|
|
||||||
protected Context mSystemContext;
|
protected Context mSystemContext;
|
||||||
protected Context mContext;
|
protected Context mContext;
|
||||||
protected MenuBuilder mMenu;
|
protected MenuBuilder mMenu;
|
||||||
@ -91,7 +93,14 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
|
|||||||
MenuItemImpl item = visibleItems.get(i);
|
MenuItemImpl item = visibleItems.get(i);
|
||||||
if (shouldIncludeItem(childIndex, item)) {
|
if (shouldIncludeItem(childIndex, item)) {
|
||||||
final View convertView = parent.getChildAt(childIndex);
|
final View convertView = parent.getChildAt(childIndex);
|
||||||
|
final MenuItemImpl oldItem = convertView instanceof MenuView.ItemView ?
|
||||||
|
((MenuView.ItemView) convertView).getItemData() : null;
|
||||||
final View itemView = getItemView(item, convertView, parent);
|
final View itemView = getItemView(item, convertView, parent);
|
||||||
|
if (item != oldItem) {
|
||||||
|
// Don't let old states linger with new data.
|
||||||
|
itemView.setPressed(false);
|
||||||
|
if (IS_HONEYCOMB) itemView.jumpDrawablesToCurrentState();
|
||||||
|
}
|
||||||
if (itemView != convertView) {
|
if (itemView != convertView) {
|
||||||
addItemView(itemView, childIndex);
|
addItemView(itemView, childIndex);
|
||||||
}
|
}
|
||||||
@ -179,7 +188,7 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
|
|||||||
/**
|
/**
|
||||||
* Filter item by child index and item data.
|
* Filter item by child index and item data.
|
||||||
*
|
*
|
||||||
* @param childIndex Intended presentation index of this item
|
* @param childIndex Indended presentation index of this item
|
||||||
* @param item Item to present
|
* @param item Item to present
|
||||||
* @return true if this item should be included in this menu presentation; false otherwise
|
* @return true if this item should be included in this menu presentation; false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,234 @@
|
|||||||
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.view.ActionProvider;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.SubMenu;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
|
|
||||||
|
/** Used to carry an instance of our version of MenuItem through a native channel. */
|
||||||
|
public class MenuItemMule implements MenuItem {
|
||||||
|
private static final String ERROR = "Cannot interact with object designed for temporary "
|
||||||
|
+ "instance passing. Make sure you using both SherlockFragmentActivity and "
|
||||||
|
+ "SherlockFragment.";
|
||||||
|
|
||||||
|
|
||||||
|
private final com.actionbarsherlock.view.MenuItem mItem;
|
||||||
|
|
||||||
|
public MenuItemMule(com.actionbarsherlock.view.MenuItem item) {
|
||||||
|
mItem = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public com.actionbarsherlock.view.MenuItem unwrap() {
|
||||||
|
return mItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean collapseActionView() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean expandActionView() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionProvider getActionProvider() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getActionView() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public char getAlphabeticShortcut() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getGroupId() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Drawable getIcon() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Intent getIntent() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemId() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContextMenuInfo getMenuInfo() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public char getNumericShortcut() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu getSubMenu() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitle() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitleCondensed() {
|
||||||
|
return mItem.getTitleCondensed();
|
||||||
|
//throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSubMenu() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isActionViewExpanded() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCheckable() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisible() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionProvider(ActionProvider arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionView(View arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionView(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setAlphabeticShortcut(char arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setCheckable(boolean arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setChecked(boolean arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setEnabled(boolean arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIcon(Drawable arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIcon(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIntent(Intent arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setNumericShortcut(char arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setOnActionExpandListener(OnActionExpandListener arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setShortcut(char arg0, char arg1) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setShowAsAction(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setShowAsActionFlags(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitle(CharSequence arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitle(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitleCondensed(CharSequence arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setVisible(boolean arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,292 @@
|
|||||||
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
|
import com.actionbarsherlock.internal.view.ActionProviderWrapper;
|
||||||
|
import com.actionbarsherlock.view.ActionProvider;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
import com.actionbarsherlock.view.SubMenu;
|
||||||
|
|
||||||
|
public class MenuItemWrapper implements MenuItem, android.view.MenuItem.OnMenuItemClickListener {
|
||||||
|
private final android.view.MenuItem mNativeItem;
|
||||||
|
private SubMenu mSubMenu = null;
|
||||||
|
private OnMenuItemClickListener mMenuItemClickListener = null;
|
||||||
|
private OnActionExpandListener mActionExpandListener = null;
|
||||||
|
private android.view.MenuItem.OnActionExpandListener mNativeActionExpandListener = null;
|
||||||
|
|
||||||
|
|
||||||
|
public MenuItemWrapper(android.view.MenuItem nativeItem) {
|
||||||
|
if (nativeItem == null) {
|
||||||
|
throw new IllegalStateException("Wrapped menu item cannot be null.");
|
||||||
|
}
|
||||||
|
mNativeItem = nativeItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemId() {
|
||||||
|
return mNativeItem.getItemId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getGroupId() {
|
||||||
|
return mNativeItem.getGroupId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
return mNativeItem.getOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitle(CharSequence title) {
|
||||||
|
mNativeItem.setTitle(title);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitle(int title) {
|
||||||
|
mNativeItem.setTitle(title);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitle() {
|
||||||
|
return mNativeItem.getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setTitleCondensed(CharSequence title) {
|
||||||
|
mNativeItem.setTitleCondensed(title);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getTitleCondensed() {
|
||||||
|
return mNativeItem.getTitleCondensed();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIcon(Drawable icon) {
|
||||||
|
mNativeItem.setIcon(icon);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIcon(int iconRes) {
|
||||||
|
mNativeItem.setIcon(iconRes);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Drawable getIcon() {
|
||||||
|
return mNativeItem.getIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setIntent(Intent intent) {
|
||||||
|
mNativeItem.setIntent(intent);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Intent getIntent() {
|
||||||
|
return mNativeItem.getIntent();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setShortcut(char numericChar, char alphaChar) {
|
||||||
|
mNativeItem.setShortcut(numericChar, alphaChar);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setNumericShortcut(char numericChar) {
|
||||||
|
mNativeItem.setNumericShortcut(numericChar);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public char getNumericShortcut() {
|
||||||
|
return mNativeItem.getNumericShortcut();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setAlphabeticShortcut(char alphaChar) {
|
||||||
|
mNativeItem.setAlphabeticShortcut(alphaChar);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public char getAlphabeticShortcut() {
|
||||||
|
return mNativeItem.getAlphabeticShortcut();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setCheckable(boolean checkable) {
|
||||||
|
mNativeItem.setCheckable(checkable);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCheckable() {
|
||||||
|
return mNativeItem.isCheckable();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setChecked(boolean checked) {
|
||||||
|
mNativeItem.setChecked(checked);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked() {
|
||||||
|
return mNativeItem.isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setVisible(boolean visible) {
|
||||||
|
mNativeItem.setVisible(visible);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisible() {
|
||||||
|
return mNativeItem.isVisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setEnabled(boolean enabled) {
|
||||||
|
mNativeItem.setEnabled(enabled);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return mNativeItem.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSubMenu() {
|
||||||
|
return mNativeItem.hasSubMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu getSubMenu() {
|
||||||
|
if (hasSubMenu() && (mSubMenu == null)) {
|
||||||
|
mSubMenu = new SubMenuWrapper(mNativeItem.getSubMenu());
|
||||||
|
}
|
||||||
|
return mSubMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
|
||||||
|
mMenuItemClickListener = menuItemClickListener;
|
||||||
|
//Register ourselves as the listener to proxy
|
||||||
|
mNativeItem.setOnMenuItemClickListener(this);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(android.view.MenuItem item) {
|
||||||
|
if (mMenuItemClickListener != null) {
|
||||||
|
return mMenuItemClickListener.onMenuItemClick(this);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContextMenuInfo getMenuInfo() {
|
||||||
|
return mNativeItem.getMenuInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setShowAsAction(int actionEnum) {
|
||||||
|
mNativeItem.setShowAsAction(actionEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setShowAsActionFlags(int actionEnum) {
|
||||||
|
mNativeItem.setShowAsActionFlags(actionEnum);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionView(View view) {
|
||||||
|
mNativeItem.setActionView(view);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionView(int resId) {
|
||||||
|
mNativeItem.setActionView(resId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View getActionView() {
|
||||||
|
return mNativeItem.getActionView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setActionProvider(ActionProvider actionProvider) {
|
||||||
|
mNativeItem.setActionProvider(new ActionProviderWrapper(actionProvider));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionProvider getActionProvider() {
|
||||||
|
android.view.ActionProvider nativeProvider = mNativeItem.getActionProvider();
|
||||||
|
if (nativeProvider != null && nativeProvider instanceof ActionProviderWrapper) {
|
||||||
|
return ((ActionProviderWrapper)nativeProvider).unwrap();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean expandActionView() {
|
||||||
|
return mNativeItem.expandActionView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean collapseActionView() {
|
||||||
|
return mNativeItem.collapseActionView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isActionViewExpanded() {
|
||||||
|
return mNativeItem.isActionViewExpanded();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
|
||||||
|
mActionExpandListener = listener;
|
||||||
|
|
||||||
|
if (mNativeActionExpandListener == null) {
|
||||||
|
mNativeActionExpandListener = new android.view.MenuItem.OnActionExpandListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemActionExpand(android.view.MenuItem menuItem) {
|
||||||
|
if (mActionExpandListener != null) {
|
||||||
|
return mActionExpandListener.onMenuItemActionExpand(MenuItemWrapper.this);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemActionCollapse(android.view.MenuItem menuItem) {
|
||||||
|
if (mActionExpandListener != null) {
|
||||||
|
return mActionExpandListener.onMenuItemActionCollapse(MenuItemWrapper.this);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Register our inner-class as the listener to proxy method calls
|
||||||
|
mNativeItem.setOnActionExpandListener(mNativeActionExpandListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,150 @@
|
|||||||
|
package com.actionbarsherlock.internal.view.menu;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.SubMenu;
|
||||||
|
|
||||||
|
/** Used to carry an instance of our version of Menu through a native channel. */
|
||||||
|
public class MenuMule implements Menu {
|
||||||
|
private static final String ERROR = "Cannot interact with object designed for temporary "
|
||||||
|
+ "instance passing. Make sure you using both SherlockFragmentActivity and "
|
||||||
|
+ "SherlockFragment.";
|
||||||
|
|
||||||
|
|
||||||
|
private final com.actionbarsherlock.view.Menu mMenu;
|
||||||
|
|
||||||
|
public MenuMule(com.actionbarsherlock.view.Menu menu) {
|
||||||
|
mMenu = menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
public com.actionbarsherlock.view.Menu unwrap() {
|
||||||
|
return mMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem add(CharSequence arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem add(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem add(int arg0, int arg1, int arg2, CharSequence arg3) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem add(int arg0, int arg1, int arg2, int arg3) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int addIntentOptions(int arg0, int arg1, int arg2,
|
||||||
|
ComponentName arg3, Intent[] arg4, Intent arg5, int arg6,
|
||||||
|
MenuItem[] arg7) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu addSubMenu(CharSequence arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu addSubMenu(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu addSubMenu(int arg0, int arg1, int arg2, CharSequence arg3) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubMenu addSubMenu(int arg0, int arg1, int arg2, int arg3) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem findItem(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MenuItem getItem(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasVisibleItems() {
|
||||||
|
return mMenu.hasVisibleItems();
|
||||||
|
//throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isShortcutKey(int arg0, KeyEvent arg1) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performIdentifierAction(int arg0, int arg1) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performShortcut(int arg0, KeyEvent arg1, int arg2) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeGroup(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeItem(int arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGroupCheckable(int arg0, boolean arg1, boolean arg2) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGroupEnabled(int arg0, boolean arg1) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setGroupVisible(int arg0, boolean arg1) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setQwertyMode(boolean arg0) {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
throw new IllegalStateException(ERROR);
|
||||||
|
}
|
||||||
|
}
|