サンプルアプリを開発しています。ボタンをクリックすると、タイトルとボタンを持つアラートを表示できます。ただし、ユーザー名(ラベル)とテキストフィールド(編集フィールド)とボタン。ボタンをクリックすると、そのための別のポップアップxmlファイルを作成できますか?
public void selfDestruct(View view) {
// Kabloey
Log.d("Naveen", "Test====");
System.out.println("----------------------ghfgjhf-----------------");
AlertDialog alertDialog = new AlertDialog.Builder(SecondActivity.this).create();
alertDialog.setTitle("Reset...");
alertDialog.setMessage("R u sure?");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//here you can add functions
} });
alertDialog.show();
}
<Button
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/self_destruct"
Android:onClick="selfDestruct" />
custom_dialog.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" >
<EditText
Android:id="@+id/editText"
Android:hint="Enter some thing"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:layout_marginTop="10dp">
<Button
Android:id="@+id/save"
Android:layout_marginTop="15dp"
Android:layout_weight="1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="SAVE" />
<Button
Android:id="@+id/cancel"
Android:layout_marginTop="15dp"
Android:layout_weight="1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Cancel" />
</LinearLayout>
</LinearLayout>
custom_dialog.xmlを拡張する必要があります
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Alert Dialog");
final EditText editText = (EditText) dialog.findViewById(R.id.editText);
Button btnSave = (Button) dialog.findViewById(R.id.save);
Button btnCancel = (Button) dialog.findViewById(R.id.cancel);
dialog.show();
通常のアクティビティを作成し、Android:theme
ダイアログへ:
<activity
Android:name="com.example.carsharingkitdemo.YourPopUpActivity"
Android:theme="@Android:style/Theme.Holo.Dialog" >
</activity>
このアクティビティのxml
ファイルで、このダイアログフィールドの高さと幅を決定できます。例えば:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="300dp"
Android:layout_height="100dp">
重要なのはマニフェスト部分です。
使用してみてください: PopupWindow
ここに例を見つけることができます: http://Android-er.blogspot.co.il/2012/03/example-of-using-popupwindow.html
このコードのようにDialogを使用できます:
final Dialog dialog = new Dialog(context);
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Title...");
// set the custom dialog components - text, image and button
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Android custom dialog example!");
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
タイトルバーを削除する場合は、defineの後にこのコードを使用します。
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Dialog m_dialog;
m_dialog = new Dialog(BusinessDetail.this);
m_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater m_inflater = LayoutInflater.from(BusinessDetail.this);
View m_view = m_inflater.inflate(R.layout.rateus_popup, null);
myPopLay = (LinearLayout) m_view.findViewById(R.id.myPopLay);
m_dialog.setContentView(m_view);
m_dialog.show();
XMLコードとアクティビティコードを参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="56dp"
Android:text="Popup Window will display on this Activity" />
<Button
Android:id="@+id/popupbutton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:text="Show Popup" />
</RelativeLayout>
アクティビティファイル
package com.nkm.popup;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.view.ViewGroup.LayoutParams;
import Android.widget.Button;
import Android.widget.LinearLayout;
import Android.widget.PopupWindow;
import Android.widget.TextView;
public class PopupDemoActivity extends Activity implements OnClickListener {
LinearLayout layoutOfPopup;
PopupWindow popupMessage;
Button popupButton, insidePopupButton;
TextView popupText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
popupInit();
}
public void init() {
popupButton = (Button) findViewById(R.id.popupbutton);
popupText = new TextView(this);
insidePopupButton = new Button(this);
layoutOfPopup = new LinearLayout(this);
insidePopupButton.setText("OK");
popupText.setText("This is Popup Window.press OK to dismiss it.");
popupText.setPadding(0, 0, 0, 20);
layoutOfPopup.setOrientation(1);
layoutOfPopup.addView(popupText);
layoutOfPopup.addView(insidePopupButton);
}
public void popupInit() {
popupButton.setOnClickListener(this);
insidePopupButton.setOnClickListener(this);
popupMessage = new PopupWindow(layoutOfPopup, LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
popupMessage.setContentView(layoutOfPopup);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.popupbutton) {
popupMessage.showAsDropDown(popupButton, 0, 0);
}
else {
popupMessage.dismiss();
}
}
}
これを試して...
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Reset...").setView(editText)
.setMessage("R u sure?").setCancelable(true)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
//Do here whatever.....
}
});
AlertDialog alert = builder.create();
alert.show();
}
以下のコーディングを使用して、Androidでポップアップを表示します。
AlertDialog.builder builder=new AlertDilaog.Builder(this);
builder.setMessage("PopUP Example");
AlertDialog alert=builder.create();
alert.setTitle("");
alert.show();
new Handler.postDelayed(new Runnable()
{
@override
public void run()
{
//TODO
alert.dismiss();
}
},1*1000);
}
Youtubeリンク: https://www.youtube.com/watch?v=SEsVTTl6exg
PopupWindowクラスを使用して、ポップアップを作成します。
言及したいことの1つは、ポップアップを開いたボタンに添付することです。たとえば、上のスクリーンショットの「ポップアップを表示」ボタンが画面の中央に配置される場合、ポップアップウィンドウをボタンの位置に固定する必要があります。これを実現するには、最初に画面上のボタンの「x」と「y」の位置を取得し、ポップアップウィンドウに渡す必要があります。次に、ポップアップを適切に調整するためにオフセットを使用します-少し右、少し下に、ボタン全体と重ならないようにします。
私が言及したいもう1つの考えは、ポップアップに9パッチの背景画像を使用するため、より派手に見えることです。しかし、もちろん、あなたはそれをスキップして、あなたが望む背景を置くことも、まったく背景を置くこともできません。
Layout/main.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:background="#CCC"
Android:orientation="vertical" >
<Button
Android:id="@+id/show_popup"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Show Popup" />
</LinearLayout>
ポップアップのレイアウトを定義する新しいレイアウトファイルlayout/popup_layout.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:id="@+id/popup"
Android:layout_height="wrap_content"
Android:background="@drawable/popup_bg"
Android:orientation="vertical" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Popup"
Android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
Android:id="@+id/textView2"
Android:layout_marginTop="5dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="This is a simple popup" />
<Button
Android:id="@+id/close"
Android:layout_marginTop="10dp"
Android:layout_gravity="center_horizontal"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Close" />
</LinearLayout>
そして今、最も興味深い部分です。 TestPopupActivityを開き、以下のコードを入力します。コメントを注意深く読んで、何が起こっているのかを理解してください。
public class TestPopupActivity extends Activity {
//The "x" and "y" position of the "Show Button" on screen.
Point p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn_show = (Button) findViewById(R.id.show_popup);
btn_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//Open popup window
if (p != null)
showPopup(TestPopupActivity.this, p);
}
});
}
// Get the x and y position after the button is draw on screen
// (It's important to note that we can't get the position in the onCreate(),
// because at that stage most probably the view isn't drawn yet, so it will return (0, 0))
@Override
public void onWindowFocusChanged(boolean hasFocus) {
int[] location = new int[2];
Button button = (Button) findViewById(R.id.show_popup);
// Get the x, y location and store it in the location[] array
// location[0] = x, location[1] = y.
button.getLocationOnScreen(location);
//Initialize the Point with x, and y positions
p = new Point();
p.x = location[0];
p.y = location[1];
}
// The method that displays the popup.
private void showPopup(final Activity context, Point p) {
int popupWidth = 200;
int popupHeight = 150;
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);
// Creating the PopupWindow
final PopupWindow popup = new PopupWindow(context);
popup.setContentView(layout);
popup.setWidth(popupWidth);
popup.setHeight(popupHeight);
popup.setFocusable(true);
// Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
int OFFSET_X = 30;
int OFFSET_Y = 30;
// Clear the default translucent background
popup.setBackgroundDrawable(new BitmapDrawable());
// Displaying the popup at the specified location, + offsets.
popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);
// Getting a reference to Close button, and close the popup when clicked.
Button close = (Button) layout.findViewById(R.id.close);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popup.dismiss();
}
});
}
}