5

Ich habe versucht, eine kontextabhängige Aktionsleiste zusammen mit einem Dialogfragment zu implementieren. Ähnlich wie das Download-Widget in Android.Kontextale Aktionsleiste mit DialogFragment

enter image description here

Ich habe versucht, android:windowActionModeOverlay zu setzen wahr in dem Thema zu sein.

Aber es scheint nicht zu funktionieren. Kann ich es irgendwie erreichen?

Antwort

4

Das Download-Fenster, das Sie in Ihrem Screenshot haben, ist eigentlich ein Activity mit dem @android:style/Theme.Holo.Dialog Thema, das es wie ein Dialog aussieht. Um dasselbe Aussehen wie das Download-Fenster zu erreichen, muss Ihr Activity nur das gleiche Thema verwenden.

Sie können dieses Thema in Ihrem Manifest festgelegt wie folgt:

<activity android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo.Dialog" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Beispiel Implementierung ohne Schnur und ziehbar Ressourcen.

Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mceley.dialog.example" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Holo.Dialog" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

MainActivity.java:

package com.mceley.dialog.example; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.ActionMode; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity implements OnClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 

     findViewById(R.id.context_button).setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     ExampleMode mode = new ExampleMode(); 
     startActionMode(mode); 
    } 

    public class ExampleMode implements ActionMode.Callback { 

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      return false; 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      mode.getMenuInflater().inflate(R.menu.main_menu, menu); 
      return true; 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 

     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      return false; 
     } 
    } 
} 

main_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" > 

    <Button android:id="@+id/context_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/show_context_bar" /> 

</LinearLayout> 

main_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/action_settings" 
     android:showAsAction="never" 
     android:title="@string/action_settings"/> 
</menu> 

Ergebnis:

Dialog Example App

+0

ich auf diese kam bei der Suche. Ich wollte wissen, ob es einen Weg gibt, dies zu tun, ohne eine Aktivität für das Fragment zu erzeugen. Wie auch immer .. Danke –

0

Ich glaube nicht, dass Sie ActionBar in DialogFragment hinzufügen können.

Aber wir können versuchen, dass Aktivität als Dialog verwenden.

Ich habe schon versucht, diese mit ActionBarSherlock und ich habe R.style.Sherlock___Theme_Dialog als meine Tätigkeit ist das Thema hinzugefügt, aber es sieht wie folgt aus:

enter image description hereenter image description hereenter image description here

Nach oben Sache tun i understud können wir ActionBar nicht hinzufügen in Dialog oder DialogFragment.

Verwandte Themen