2013-05-26 13 views
7

W jaki sposób przedstawiasz działanie jako okno nakładki na tablety? Przykładem tego jest nowa aplikacja Google+ jak widać tutaj:Wyświetl aktywność jako okno nakładki na tablety

enter image description here

ważne chcę ActionBar być częścią okna, a za działalność pod zostać wygaszone, jak widać na zrzucie ekranu.

Dzięki

Odpowiedz

10

można po prostu użyć motywu dialogowe. Aby to zrobić, wystarczy napisać w manifeście:

android:theme="@android:style/Theme.Dialog" 

lub

android:theme="@android:style/Theme.Holo.Dialog" 

lub po prostu tworząc własny motyw w styles.xml:

<style name="MyDialogTheme" parent="Theme.Holo.Dialog"> 
... 
</style> 

Można ustawić taki motyw dla Xlarge lub duży ekran, tworząc plik styles.xml w wartościach-xlarge lub wartości-duże foldery.

Jeśli chcesz ustawić ten temat tylko dla tabletek, można zmienić motyw dynamicznie poprzez sprawdzenie rozmiaru ekranu tak:

if (Configuration.SCREENLAYOUT_SIZE_XLARGE) 
{ 
//setTheme(yourDialogTheme); 
} 

Proszę sprawdzić tę odpowiedź, jeśli chcesz dialog z paska akcji. Możesz to zrobić, tworząc własne okno dialogowe.

Dialog themed activity with action bar

Custom dialog

EDIT: Odpowiedź z google group post.Spróbuj tego w xml ze stylami:

<style name="PopupTheme" parent="android:Theme.Holo.Light.Dialog"> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowSoftInputMode">stateAlwaysHidden</item> 
     <item name="android:windowActionModeOverlay">true</item> 
     <item name="android:windowIsTranslucent">true</item> 
    </style> 

W kodzie Java

public static void showAsPopup(Activity activity) { 
     //To show activity as dialog and dim the background, you need to declare android:theme="@style/PopupTheme" on for the chosen activity on the manifest 
     activity.requestWindowFeature(Window.FEATURE_ACTION_BAR); 
     activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND, 
       WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
     LayoutParams params = activity.getWindow().getAttributes(); 
     params.height = LayoutParams.FILL_PARENT; 
     params.width = 850; //fixed width 
     params.alpha = 1.0f; 
     params.dimAmount = 0.5f; 
     activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
    } 
1

Należy użyć Theme.Dialog w was Manifest.xml za aktywność

android:theme="@android:style/Theme.Dialog" 

do wykorzystania w przyszłości należy użyć CustomTheme w sobie wartości/wartości-11/wartości-14->styles.xml (EDIT)

EDIT:

  <activity 
      android:name="com.apps.ActivityP" 
      android:theme="@style/CustomTheme"/> 

w was ceni styles.xml folderu

<style name="CustomTheme" parent="android:Theme.Black"> 

na przykład ty Wartości-11/14 styles.xml folderu

<style name="CustomTheme" parent="android:Theme.Holo.Dialog"> 
+0

Próbowałem to i to ma wpływ na moje Nexus 10. My manifeście: Styles.xml ​​@ android: kolor/przezroczysty @ android: kolor/przezroczysty Milo

+0

Powinieneś również sprawdzić to [link] (http : //developer.android.com/guide/topics/ui/themes.html) – Oli

+0

Dzięki, android: Theme.Holo.Dialog załatwił sprawę. Nie wiem dlaczego, być może nadpisałem inne style gdzie indziej. Jednak wydaje mi się, że nie można używać ActionBara przy użyciu tego motywu. Otrzymuję wywołanie nullpointer: actionBar.setDisplayHomeAsUpEnabled (true); – Milo

0

Trzeba mierze swoją aktywność motyw z

Theme.AppCompat.Light.DialogWhenLarge 

lub

Theme.Holo.DialogWhenLarge 

Tutaj jest Przykładem

<style name="AppTheme.DialogActivity" parent="Theme.AppCompat.Light.DialogWhenLarge"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <!-- Your theme here --> 
</style> 
Powiązane problemy