2

アクティビティをダイアログとして開きたい

public class MoveActivity extends Activity {
    private ListView list;
    private DocAdapter adapter;
    private ArrayList<Dictionary<String, String>> mlist;
    DatabaseHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_move);
        list = (ListView) findViewById(R.id.list);
        helper = ApplicationClass.getDatabaseHelperInstance();
        helper.open(DatabaseHelper.readMode);
        mlist = helper.getDocList();
        helper.close();
        adapter = new DocAdapter(this, mlist);
        list.setAdapter(adapter);
    }

}
4

3 に答える 3

12

ダイアログでアクション バーを使用するには、style.xml にカスタム テーマを作成し、親を「Theme.AppCompat.Light」にする必要があります。

<style name="PopupTheme" parent="Theme.AppCompat.Light">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
        <item name="android:windowActionModeOverlay">true</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowCloseOnTouchOutside">true</item>
        <item name="android:windowIsTranslucent">true</item>
    </style>

そして、アクティビティ タグを使用してマニフェストにこのスタイルを追加します。

<activity
            android:name=".MyActivity"
            android:configChanges="orientation|keyboardHidden|locale"
            android:screenOrientation="portrait"
            android:theme="@style/PopupTheme" >

最後に、アクティビティの前にこのコードを追加しますsetConytentView(layoutID)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_ACTION_BAR);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
            WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        LayoutParams params = this.getWindow().getAttributes(); 
        params.alpha = 1.0f;
        params.dimAmount = 0.5f;
        this.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 

        // This sets the window size, while working around the IllegalStateException thrown by ActionBarView
        this.getWindow().setLayout(600,900);

        setContentView(R.layout.dialog_move);
}
于 2013-10-31T08:24:42.900 に答える
0

で定義されたダイアログ i としてアクティビティを開始するAndroidManifest.xml

<activity android:theme="@android:style/Theme.Dialog" />
于 2013-10-31T07:26:06.927 に答える
-3

マニフェスト ファイルで、アクティビティのテーマをダイアログとして定義します。

<activity android:theme="@android:style/Theme.Dialog" />
于 2013-10-31T07:26:21.507 に答える