как определить положение диалогового окна предупреждения в представлении

Возможный дубликат:
Показать AlertDialog в любое положение экрана

Я делаю приложение, в котором я отображаю alert dialog. Я хочу использовать custom layout для своего диалогового окна предупреждения. Как я могу установить его положение в соответствии с моими потребностями в view/layout.

Мой код:

LayoutInflater inflater=getLayoutInflater();
View view = inflater.inflate(R.layout.actionbarmain,null);
view.setMinimumWidth(200);
view.setMinimumHeight(400);

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setView(view);
alertDialog.show();

person Naseeb Sheoran    schedule 26.07.2012    source источник
comment
Взгляните на этот вопрос и принятый ответ.   -  person thegrinner    schedule 26.07.2012
comment
компилятор показывает проблему в getWindow() и requestWindowFeature(Window.FEATURE_NO_TITLE);   -  person Naseeb Sheoran    schedule 26.07.2012
comment
Опубликуйте свой код, где вы это вызываете, я надеюсь, в onCreate() вашей деятельности.   -  person Abhilasha    schedule 26.07.2012
comment
Вы вызываете getWindow() перед show()?   -  person thegrinner    schedule 26.07.2012
comment
Подскажите, пожалуйста, как устранить эту проблему. Даже у меня импортировано android.view.Window; android.view.WindowManager;   -  person Naseeb Sheoran    schedule 26.07.2012
comment
да, я звоню перед шоу()   -  person Naseeb Sheoran    schedule 26.07.2012
comment
Вы должны позвонить getWindow() перед setContentView(). Это решит вашу проблему.   -  person Abhilasha    schedule 26.07.2012
comment
Метод requestWindowFeature(int) не определен для типа AlertDialog.Builder.   -  person Naseeb Sheoran    schedule 26.07.2012
comment
Метод getWindow() не определен для типа AlertDialog.Builder, это проблема с getWindow()   -  person Naseeb Sheoran    schedule 26.07.2012
comment
Подскажите пожалуйста решение или любой альтернативный способ решить эту проблему   -  person Naseeb Sheoran    schedule 26.07.2012
comment
что вы хотите показать в своем диалоге ??   -  person AkashG    schedule 26.07.2012
comment
@AkashG, пожалуйста, помогите мне, сэр, если можете   -  person Naseeb Sheoran    schedule 26.07.2012
comment
Сколько кнопок в линейной раскладке и какая у них ориентация??   -  person AkashG    schedule 26.07.2012


Ответы (2)


Создайте действие с требуемым макетом и укажите тему как диалоговое окно в манифесте.

Это образец: вам нужно изменить его в соответствии с вашим запросом

public class EditPropertyActivity extends Activity {

    /** Called when the activity is first created. */
    // @Override
    /*
     * (non-Javadoc)
     * 
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog);
        setTitle("");
        TextView propName = (TextView) findViewById(R.id.tv_propName);          

        propName.setText(getIntent().getExtras().getString("prop_label"));

        final EditText ed_propValue = (EditText) findViewById(R.id.ed_propValue);
        ed_propValue.setText(value);
        if (tagName.equals("timeout")) {
            ed_propValue.setInputType(InputType.TYPE_CLASS_NUMBER);
        }
        Button btn_save = (Button) findViewById(R.id.btn_save);
        btn_save.setOnClickListener(new View.OnClickListener() {
        //onclick
        }
    }

В манифесте:

        <activity
            android:name="EditPropertyActivity"
            android:theme="@android:style/Theme.Dialog" >
        </activity>

Макет диалога.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_propName"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="10dip"
        android:layout_marginLeft="15dip"
        android:layout_marginRight="25dip"
        android:layout_marginTop="10dip"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/ed_propValue"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_save"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/lbl_btn_save" />

        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/cancel" />
    </LinearLayout>

</LinearLayout>
person Abhilasha    schedule 26.07.2012
comment
Спасибо за ваши усилия, мэм, но это не решение моей проблемы. я получаю ту же проблему снова и снова - person Naseeb Sheoran; 26.07.2012
comment
Хорошо, тогда спасибо за ваши усилия - person Naseeb Sheoran; 26.07.2012

чтобы добавить собственный макет в диалоговое окно оповещения, вам нужно раздуть макет в нем:

тестовый XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

            <Button
                android:id="@+id/btn1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="test" />
            <Button
                android:id="@+id/btn2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="test" />
            <Button
                android:id="@+id/btn3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="test" />
</LinearLayout>

Если вы хотите раздуть этот xml в диалоговом окне предупреждения, чем:

                AlertDialog.Builder builder=new Builder(YourActivityName.this);
                LayoutInflater inflater=getLayoutInflater();
                View view=inflater.inflate(R.layout.testxml, null);
                builder.setView(view);
                builder.setTitle("New Project");
                builder.setMessage("knknknknknmknknknk");
                builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder.create();
                builder.show();
person AkashG    schedule 26.07.2012
comment
Я только что взял линейный макет с 3 кнопками, имеющими вертикальную ориентацию, вы можете добавить к нему столько кнопок и изменить ориентацию в соответствии с вашими требованиями. Я реализовал это, чтобы решить вашу проблему и установить этот макет как представление в AlertDialog. - person AkashG; 26.07.2012