قرار دادن متن داخل input با استفاده از Dialog در اندروید
شنبه 1 اسفند 1394در این مقاله قصد داریم یک dialog سفارشی ایجاد نماییم ، به این گونه که وقتی کاربر روی input زد و می خواست متن داخل آن بنویسد یک alertdialog باز شود و داخل آن متن مورد نظر را بنویسد، اگر طراح سایت باشید مثل modal که در mvc وجود دارد ایجاد می شود.
ابتدا یک پروژه ی جدید ایجاد نمایید یک نام برای پروژه و یک پکیج ایجاد نمایید به صورت زیر:

در مرحله ی بعدی نام پروژه و آدرس پروژه و sdk استفاده قرار گرفته است.

داخل پوشه ی res یک activity جدید ایجاد نمایید به صورت زیر:
<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/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="نمایش پیام" android:layout_gravity="right"/>
<EditText
android:id="@+id/editTextResult"
android:layout_width="match_parent"
android:inputType="text"
android:layout_height="wrap_content" android:gravity="right">
</EditText>
</LinearLayout>
صفحه ای که قرار متن داخل آن نوشته شود به صورت زیر خواهد بود:

حالا داخل پوشه ی string می توانید فایل xml زیر را تغییر دهید مثلا نام پروژه، textview های داخل پروژه و..
<resources>
<string name="app_name">PromptDialogExample</string>
<string name="menu_settings">تنظیمات</string>
<string name="tv_label">پیام : </string>
<string name="button_label">نمایش پیام</string>
</resources>
حالا باید برای نمایش dialog باید از یک فایل xml استفاده نمایید که یک از textview و یک edittext استفاده می شود، که زمانی که کاربر متنی را وارد می نماید متن وارد شده بعداز بسته شدن dialog داخل یک edittext قرار می گیرد.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="پیام"
android:textAppearance="?android:attr/textAppearanceLarge" android:layout_gravity="right"/>
<EditText
android:id="@+id/userInput"
android:layout_width="match_parent"
android:inputType="text"
android:layout_height="wrap_content" android:layout_gravity="right" android:gravity="right">
<requestFocus />
</EditText>
</LinearLayout>
لایه به صورت زیر خواهد بود:

حالا بخش مهم کد در نوشتن کلاس جاوا است که چگونه می توان alertdialog را صدا زد.داخل کلاس جاوا قطعه کد زیر را قرار می دهید:
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private Button button;
private EditText editTextMainScreen;
final Context context = this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// components from main.xml
button = (Button) findViewById(R.id.button);
editTextMainScreen = (EditText) findViewById(R.id.editTextResult);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// get prompts.xml view
LayoutInflater layoutInflater = LayoutInflater.from(context);
View promptView = layoutInflater.inflate(R.layout.prompts, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
// set prompts.xml to be the layout file of the alertdialog builder
alertDialogBuilder.setView(promptView);
final EditText input = (EditText) promptView.findViewById(R.id.userInput);
// setup a dialog window
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// get user input and set it to result
editTextMainScreen.setText(input.getText());
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create an alert dialog
AlertDialog alertD = alertDialogBuilder.create();
alertD.show();
}
});
}
}
همان طور که می بینید ما با استفاده از layoutinflater فایل xml خود را می خواهیم نمایش دهیم، و هنگامی که ما آن را می زنیم ، به ما یک alertdialog جدیدی در view، نمایش می دهد.
نمایش خروجی به صورت زیر خواهد بود:



زمانی که برنامه اجرا می شود اگر شما بخواهید داخل edittext چیزی بنویسید یک alert باز می شود با نوشتن و ok زدن متن مورد نظر داخل edittext قرار می گیرد.
- Android
- 2k بازدید
- 5 تشکر