5

Я пытался реализовать контекстную панель действий вместе с фрагментом диалога. Подобно загрузке виджета в android.Контекстная панель действий с DialogFragment

enter image description here

Я попытался установить android:windowActionModeOverlay, чтобы быть правдой в этой теме.

Но он, похоже, не работает. Есть ли способ, которым я могу это достичь?

ответ

4

Окно загрузки, которое у вас есть на скриншоте, на самом деле является Activity, используя тему @android:style/Theme.Holo.Dialog, что делает его похожим на диалог. Чтобы добиться такого же взгляда, как и окно загрузки, ваш Activity должен использовать только ту же тему.

Вы можете установить эту тему в манифесте как так:

<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> 

Пример реализации за исключением строки и рисуем ресурсы.

манифеста:

<?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> 

Результат:

Dialog Example App

+0

я наткнулся это при поиске. Я хотел знать, есть ли способ сделать это, не создавая активности для фрагмента. В любом случае .. Спасибо – 2013-04-10 06:30:52

0

Я не думаю, что вы можете добавить ActionBar в DialogFragment.

Но мы можем попробовать это с помощью Activity As Dialog.

Я попытался это с ActionBarSherlock и я добавил R.style.Sherlock___Theme_Dialog в качестве темы моей деятельности, но это выглядит следующим образом:

enter image description hereenter image description hereenter image description here

После этого вещь выше я understud, мы не можем добавить ActionBar в Dialog или DialogFragment.