2

AlertDialogAndroid 2.3.4でのSherlockの使用:以下を含むものを表示したいと思います:

1)タイトル
2)コンテンツ 3) 以下のクラス
を使用している 2つのボタン :

public class MyAlertDialog extends SherlockDialogFragment{

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
          // Use the Builder class for convenient dialog construction

        AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity());
        builder.setMessage("Title")
               .setPositiveButton("Fire!", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // FIRE ZE MISSILES!
                   }
               })
               .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                   }
               });
        // Create the AlertDialog object and return it
        return builder.create();
    }

}

私の活動では私は呼んでいます:

MyAlertDialog m = new MyAlertDialog();
m.show(getSupportFragmentManager(), "hey");

AlertDialogを表示していますが、古いテーマを使用しています(Android 2.3.4を使用していることを忘れないでください)

必要に応じて、これが私の主なアクティビティクラス全体です。

public class MainActivity extends SherlockFragmentActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar ab;
        ab = getSupportActionBar();
        ab.setTitle("Testing Sherlock"); 

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getSupportMenuInflater().inflate(R.menu.main, menu);

        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch(item.getItemId())
        {
        case R.id.action_one:
            MyAlertDialog m = new MyAlertDialog();
            m.show(getSupportFragmentManager(), "hey");
            break;
        }
        return super.onOptionsItemSelected(item);
    }
}

アプリに設定しているスタイルは次のとおりです。

<resources>
<style name="AppBaseTheme" parent="@style/Theme.Sherlock.Light">
</resources>

PS:私はActionBarディスプレイを持っていて、のテーマを除いてすべてが正常に機能していますAlertDialog
私はそれをこのように見せたい:

ここに画像の説明を入力してください

そしてこれが好きではない:

ここに画像の説明を入力してください

4

3 に答える 3

4

スタイルの作成:

<resources>
    <style name="MyFragment">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:colorBackground">#ffffff</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:textColor">#FF0000</item>
    </style>
</resources>

SherlockFragmentActivityで:

public class MyDialogFragment extends SherlockDialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyFragment);
        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();
        final View view = inflater.inflate(R.layout.custom_layout, null);
        ....
    }
}

R.style.MyFragmentがスタイルです。

R.style.custom_layoutは、AlertDialogのカスタムレイアウトです。

于 2013-04-09T08:52:08.680 に答える
4

このライブラリは、ホロスタイルのAndroidダイアログに適しています https://github.com/inmite/android-styled-dialogs

アンドロイドスタイルのダイアログ

于 2013-08-12T12:59:09.593 に答える
1

私はすでにこれを行っています。私が行った正確な手順は覚えていませんが、一般的なアプローチは次のとおりです。

XML alert_dialog_holo(これが名前だと思います)を
android sdk folder \ platform \ android-version using holo \ data \ res\layout
からプロジェクトにコピーします。

正しく機能させるには、いくつかの変更を加える必要があると思います(正確に何をしたかはもうわかりませんが、一部のスタイル定義から「android:」プレフィックスを削除する必要があることを覚えておいてください。そうすれば、 ABSによって認識されます。

このツールから生成されたスタイルも必要かもしれませんが、それが機能するように暗示されているかどうかはわかりません。

また、この質問を見てください。対応する回答は、ダイアログで独自のXMLを膨らませる方法を導きます。

于 2013-03-17T17:06:33.440 に答える