Android 仿IOS彈出框

輸入型彈出框

在他人代碼基礎(chǔ)上進行了修改衅胀,實現(xiàn) 可輸入式彈出框


public class AlertInputTextDialog {

  private Context context;

  private Dialog dialog;

  private LinearLayout lLayout_bg;

  private TextView txt_title;

  private EditText txt_msg;

  private Button btn_neg;

  private Button btn_pos;

  private ImageView img_line;

  private Display display;

  private boolean showTitle = false;

  private boolean showMsg = false;

  private boolean showPosBtn = false;

  private boolean showNegBtn = false;

  public AlertInputTextDialog(Context context) {

      this.context = context;

      WindowManager windowManager= (WindowManager) context

.getSystemService(Context.WINDOW_SERVICE);

      display = windowManager.getDefaultDisplay();

}

  public AlertInputTextDialog builder() {

      // 獲取Dialog布局

      View view= LayoutInflater.from(context).inflate(

            R.layout.view_alert_input_tsxt_dialog, null);

      // 獲取自定義Dialog布局中的控件

      lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);

      txt_title = (TextView) view.findViewById(R.id.txt_title);

      txt_title.setVisibility(View.GONE);

      txt_msg =  view.findViewById(R.id.txt_msg);

      txt_msg.setVisibility(View.GONE);

      btn_neg = (Button) view.findViewById(R.id.btn_neg);

      btn_neg.setVisibility(View.GONE);

      btn_pos = (Button) view.findViewById(R.id.btn_pos);

      btn_pos.setVisibility(View.GONE);

      img_line = (ImageView) view.findViewById(R.id.img_line);

      img_line.setVisibility(View.GONE);

      // 定義Dialog布局和參數(shù)

      dialog = new Dialog(context, R.style.AlertDialogStyle);

      dialog.setContentView(view);

      // 調(diào)整dialog背景大小

      lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display

            .getWidth() * 0.85), LayoutParams.WRAP_CONTENT));

      return this;

}

  public AlertInputTextDialog setTitle(String title) {

      showTitle = true;

      if ("".equals(title)) {

        txt_title.setText("標題");

      } else {

        txt_title.setText(title);

}

      return this;

}

  public AlertInputTextDialog setMsg(String msg) {

      showMsg = true;

      if ("".equals(msg)) {

        txt_msg.setText("內(nèi)容");

      } else {

        txt_msg.setText(msg);

}

      return this;

}

  public AlertInputTextDialog setCancelable(boolean cancel) {

      dialog.setCancelable(cancel);

      return this;

}

  IOnDialogClickListener iOnDialogClickListener;

  public AlertInputTextDialog setPositiveButton(String text, final IOnDialogClickListener iOnDialogClickListener) {

      showPosBtn = true;

      if ("".equals(text)) {

        btn_pos.setText("確定");

      } else {

        btn_pos.setText(text);

}

      btn_pos.setOnClickListener(new OnClickListener() {

        @Override

        public void onClick(View v) {

            iOnDialogClickListener.onSubmitClick(txt_msg.getText().toString());

            dialog.dismiss();

}

});

      return this;

}

  public AlertInputTextDialog setNegativeButton(String text,

                                                  final OnClickListener listener) {

      showNegBtn = true;

      if ("".equals(text)) {

        btn_neg.setText("取消");

      } else {

        btn_neg.setText(text);

}

      btn_neg.setOnClickListener(new OnClickListener() {

        @Override

        public void onClick(View v) {

            listener.onClick(v);

            dialog.dismiss();

}

});

      return this;

}

  private void setLayout() {

      if (!showTitle && !showMsg) {

        txt_title.setText("提示");

        txt_title.setVisibility(View.VISIBLE);

}

      if (showTitle) {

        txt_title.setVisibility(View.VISIBLE);

}

      if (showMsg) {

        txt_msg.setVisibility(View.VISIBLE);

}

      if (!showPosBtn && !showNegBtn) {

        btn_pos.setText("確定");

        btn_pos.setVisibility(View.VISIBLE);

        btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);

        btn_pos.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

              dialog.dismiss();

}

});

}

      if (showPosBtn && showNegBtn) {

        btn_pos.setVisibility(View.VISIBLE);

        btn_pos.setBackgroundResource(R.drawable.alertdialog_right_selector);

        btn_neg.setVisibility(View.VISIBLE);

        btn_neg.setBackgroundResource(R.drawable.alertdialog_left_selector);

        img_line.setVisibility(View.VISIBLE);

}

      if (showPosBtn && !showNegBtn) {

        btn_pos.setVisibility(View.VISIBLE);

        btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);

}

      if (!showPosBtn && showNegBtn) {

        btn_neg.setVisibility(View.VISIBLE);

        btn_neg.setBackgroundResource(R.drawable.alertdialog_single_selector);

}

}

  public void show() {

      setLayout();

      dialog.show();

}

}


布局 view_alert_input_tsxt_dialog.xml


android:id="@+id/lLayout_bg"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:background="@drawable/alert_bg"

    android:orientation="vertical" >

        android:id="@+id/txt_title"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginLeft="15dp"

        android:layout_marginRight="15dp"

        android:layout_marginTop="15dp"

        android:gravity="center"

        android:textColor="@color/black"

        android:textSize="18sp"

        android:textStyle="bold" />

        android:id="@+id/txt_msg"

        android:background="@null"

        android:inputType="text"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginLeft="15dp"

        android:layout_marginRight="15dp"

        android:layout_marginTop="15dp"

        android:gravity="center"

        android:textColor="@color/black"

        android:textSize="16sp" />

        android:layout_width="match_parent"

        android:layout_height="0.5dp"

        android:layout_marginTop="10dp"

        android:background="@color/alertdialog_line" />

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >

            android:id="@+id/btn_neg"

            android:layout_width="wrap_content"

            android:layout_height="43dp"

            android:layout_weight="1"

            android:background="@drawable/alertdialog_left_selector"

            android:gravity="center"

            android:textColor="@color/actionsheet_blue"

            android:textSize="16sp" />

            android:id="@+id/img_line"

            android:layout_width="0.5dp"

            android:layout_height="43dp"

            android:background="@color/alertdialog_line" />

            android:id="@+id/btn_pos"

            android:layout_width="wrap_content"

            android:layout_height="43dp"

            android:layout_weight="1"

            android:background="@drawable/alertdialog_right_selector"

            android:gravity="center"

            android:textColor="@color/actionsheet_blue"

            android:textSize="16sp"

            />


接口


public interface IOnDialogClickListener {

    void onSubmitClick (String EtContent);

}


使用方法


*new AlertInputTextDialog(UserDataActivity.this).builder().setTitle("請輸入公司名稱")*

        .setMsg(mTvCompanyName.getText().toString())

        .setPositiveButton("確定", new IOnDialogClickListener() {

            @Override

            public void onSubmitClick(String EtContent) {

                mTvCompanyName.setText(EtContent);

                dataBean.getInfo().setName(EtContent);

}

})

        .setNegativeButton("取消", new View.OnClickListener() {

            @Override

            public void onClick(View v) {

}

        }).show();


參考文章gayhub

https://github.com/imtianx/PopMenu

支持原作者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末送悔,一起剝皮案震驚了整個濱河市活合,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厚宰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撬讽,居然都是意外死亡蕊连,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門游昼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甘苍,“玉大人,你說我怎么就攤上這事烘豌≡赝ィ” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵廊佩,是天一觀的道長囚聚。 經(jīng)常有香客問我,道長标锄,這世上最難降的妖魔是什么顽铸? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮料皇,結(jié)果婚禮上谓松,老公的妹妹穿的比我還像新娘。我一直安慰自己瓶蝴,他們只是感情好毒返,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舷手,像睡著了一般拧簸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上男窟,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天盆赤,我揣著相機與錄音,去河邊找鬼歉眷。 笑死牺六,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的汗捡。 我是一名探鬼主播淑际,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扇住!你這毒婦竟也來了春缕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤艘蹋,失蹤者是張志新(化名)和其女友劉穎锄贼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體女阀,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡宅荤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年屑迂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冯键。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡惹盼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琼了,到底是詐尸還是另有隱情逻锐,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布雕薪,位于F島的核電站昧诱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏所袁。R本人自食惡果不足惜盏档,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望燥爷。 院中可真熱鬧蜈亩,春花似錦、人聲如沸前翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽港华。三九已至道川,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間立宜,已是汗流浹背冒萄。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留橙数,地道東北人尊流。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像灯帮,于是被迫代替她去往敵國和親崖技。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容