diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle b/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle
deleted file mode 100644
index 82ea162..0000000
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-    compile "com.android.support:appcompat-v7:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.1"
-}
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore
@@ -0,0 +1,16 @@
+# Copyright 2013 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.
+src/template/
+src/common/
+build.gradle
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt
new file mode 100644
index 0000000..0d8f171
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt
@@ -0,0 +1,20 @@
+ To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
similarity index 90%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
index 7e9a861..114053e 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2013 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
+     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,
@@ -13,6 +14,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.android.actionbarcompat.listpopupmenu"
     android:versionCode="1"
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
similarity index 90%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
index 7fd05cc..13a77f3 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
@@ -17,10 +17,7 @@
 package com.example.android.actionbarcompat.listpopupmenu;
 
 import android.os.Bundle;
-import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBarActivity;
-import android.view.Menu;
-import android.view.MenuItem;
 
 /**
  * This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu} from
@@ -38,7 +35,7 @@
         super.onCreate(savedInstanceState);
 
         // Set content view (which contains a PopupListFragment)
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
     }
 
 }
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/list_item.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/list_item.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/list_item.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/list_item.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/activity_main.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/sample_main.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/menu/popup.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/menu/popup.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/menu/popup.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/menu/popup.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
similarity index 92%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
index 36233c9..e5784a9 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 -->
 <resources>
 
-    <string name="app_name">ABC List Popup Menu</string>
     <string name="menu_remove">Remove</string>
     <string name="content_open_popup">Open Popup Menu</string>
 
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..87b785f
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2013 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.
+  -->
+<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="${sample.package}.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="${sample.package}"
+            android:label="Tests for ${sample.package}" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java
new file mode 100644
index 0000000..c91ae2e
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* Copyright 2013 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.
+*/
+
+
+
+/*
+* Copyright (C) 2013 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.
+*/
+package com.example.android.actionbarcompat.listpopupmenu.tests;
+
+import com.example.android.actionbarcompat.listpopupmenu.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for ListPopupMenu sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private ListPopupMenuFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (ListPopupMenuFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/README.txt b/ui/actionbarcompat/ListPopupMenu/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/actionbarcompat/ListPopupMenu/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/_index.jd b/ui/actionbarcompat/ListPopupMenu/_index.jd
new file mode 100644
index 0000000..00e6628
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/_index.jd
@@ -0,0 +1,13 @@
+
+
+
+page.tags="ListPopupMenu"
+sample.group=NoGroup
+@jd:body
+
+<p>
+            
+            This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu}
+            from ActionBarCompat to create a list, with each item having a dropdown menu.
+            
+        </p>
diff --git a/ui/actionbarcompat/ListPopupMenu/big_icon.png b/ui/actionbarcompat/ListPopupMenu/big_icon.png
deleted file mode 100644
index 6968ae8..0000000
--- a/ui/actionbarcompat/ListPopupMenu/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/build.gradle b/ui/actionbarcompat/ListPopupMenu/build.gradle
index 036abc8..ffb5c2f 100644
--- a/ui/actionbarcompat/ListPopupMenu/build.gradle
+++ b/ui/actionbarcompat/ListPopupMenu/build.gradle
@@ -1,8 +1,11 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+
+
+
+
+// BEGIN_EXCLUDE
+apply from: "../../../../../build/build.gradle"
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+// END_EXCLUDE
diff --git a/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle b/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties b/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbarcompat/ListPopupMenu/settings.gradle b/ui/actionbarcompat/ListPopupMenu/settings.gradle
index b354d69..c0f83ff 100644
--- a/ui/actionbarcompat/ListPopupMenu/settings.gradle
+++ b/ui/actionbarcompat/ListPopupMenu/settings.gradle
@@ -1 +1,4 @@
-include ':ListPopupMenu'
+
+
+
+include 'ListPopupMenuSample'
diff --git a/ui/actionbarcompat/ListPopupMenu/template-params.xml b/ui/actionbarcompat/ListPopupMenu/template-params.xml
new file mode 100644
index 0000000..4a67f36
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/template-params.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2013 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.
+-->
+
+
+
+<sample>
+    <name>ListPopupMenu</name>
+    <group>NoGroup</group>
+    <package>com.example.android.actionbarcompat.listpopupmenu</package>
+
+    <dependency>com.android.support:appcompat-v7:18.0.+</dependency>
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu}
+            from ActionBarCompat to create a list, with each item having a dropdown menu.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
