Android imita el diálogo de entrada de una sola línea de Xiaomi Youpin

Las representaciones son las siguientes:

One.InputDialog.java

package cn.xuanma.frame.base;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.support.v7.widget.AppCompatEditText;
import android.support.v7.widget.AppCompatTextView;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;

import cn.xuanma.frame.R;

@SuppressWarnings("ALL")
public class InputDialog {

    private Dialog dialog;
    private Context context;
    private AppCompatTextView titleTextView;
    private AppCompatTextView cancelTextView;
    private AppCompatTextView confirmTextView;
    private AppCompatEditText contentEditText;

    public InputDialog(Context context, String title, String content) {
        this.context = context;
        init(title, content);
    }

    public InputDialog(Context context, int title, String content) {
        this.context = context;
        init(context.getString(title), content);
    }

    public InputDialog(Context context, String title, int content) {
        this.context = context;
        init(title, context.getString(content));
    }

    public InputDialog(Context context, int title, int content) {
        this.context = context;
        init(context.getString(title), context.getString(content));
    }

    public void setCancelListerner(View.OnClickListener listerner) {

        cancelTextView.setOnClickListener(listerner);

    }

    public void setConfirmListerner(View.OnClickListener listerner) {

        confirmTextView.setOnClickListener(listerner);

    }

    public String getTitle() {

        return titleTextView.getText().toString();

    }

    public void setTitle(String title) {

        titleTextView.setText(title);

    }

    public String getContent() {

        return contentEditText.getText().toString();

    }

    public void setContent(String content) {

        contentEditText.setText(content);

    }

    public void dismiss() {

        dialog.dismiss();

    }

    private void init(String title, String content) {

        this.dialog = new Dialog(context);
        dialog.setContentView(R.layout.dialog_input);
        dialog.getWindow().getDecorView().setPadding(0, 0, 0, 0);
        Window window = dialog.getWindow();
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        window.setGravity(Gravity.CENTER | Gravity.BOTTOM);
        layoutParams.width = (int) (displayMetrics.widthPixels * 1);
        window.setAttributes(layoutParams);
        titleTextView = dialog.findViewById(R.id.titleTextView);
        contentEditText = dialog.findViewById(R.id.contentEditText);
        cancelTextView = dialog.findViewById(R.id.cancelTextView);
        confirmTextView = dialog.findViewById(R.id.confirmTextView);
        titleTextView.setText(title);
        contentEditText.setText(content);
        contentEditText.setSelection(content.length());
        contentEditText.post(new Runnable() {
            @Override
            public void run() {
                InputMethodManager inputMethodManager = (InputMethodManager) ((Activity) context).getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
            }
        });

    }

    public void show() {

        dialog.show();

    }

}

二 .dialog.input.xml

<?xml version="1.0" encoding="utf-8"?>

<!--suppress ALL -->

<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dip"
    android:background="@drawable/border_dialog_input"
    android:orientation="vertical">

    <android.support.v7.widget.AppCompatTextView
        android:id="@+id/titleTextView"
        android:layout_width="match_parent"
        android:layout_height="80dip"
        android:gravity="center"
        android:textColor="#333333"
        android:textSize="16sp" />

    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/contentEditText"
        android:layout_width="match_parent"
        android:layout_height="40dip"
        android:layout_marginBottom="20dip"
        android:layout_marginEnd="28dip"
        android:layout_marginStart="28dip"
        android:background="@drawable/border_dialog_edit"
        android:paddingEnd="12dip"
        android:paddingStart="12dip"
        android:textColor="#666666"
        android:textSize="14sp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#DEDEDE" />

    <android.support.v7.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="48dip"
        android:orientation="horizontal">

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:id="@+id/cancelTextView"
            android:background="@drawable/border_dialog_text_left"
            android:gravity="center"
            android:text="@string/cancel"
            android:textColor="#333333"
            android:textSize="14sp" />

        <View
            android:layout_width="1px"
            android:layout_height="match_parent"
            android:background="#DEDEDE" />

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/confirmTextView"
            android:layout_weight="1"
            android:background="@drawable/border_dialog_text_right"
            android:gravity="center"
            android:text="@string/confirm"
            android:textColor="#A6937C"
            android:textSize="14sp" />

    </android.support.v7.widget.LinearLayoutCompat>

</android.support.v7.widget.LinearLayoutCompat>

Three.border_dialog_edit.xml

<?xml version="1.0" encoding="utf-8"?>

<!--suppress ALL -->

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="4dip" />

    <stroke
        android:width="1px"
        android:color="#DEDEDE" />

</shape>

四 .border_dialog_input.xml

<?xml version="1.0" encoding="utf-8"?>

<!--suppress ALL -->

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#FFFFFF" />

    <corners android:radius="4dip" />

</shape>

五 .border_dialog_text_left.xml

<?xml version="1.0" encoding="utf-8"?>

<!--suppress ALL -->

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#F9F9F9" />

    <corners android:bottomLeftRadius="4dip" />

</shape>

六 .border_dialog_text_right.xml

<?xml version="1.0" encoding="utf-8"?>

<!--suppress ALL -->

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#F9F9F9" />

    <corners android:bottomRightRadius="4dip" />

</shape>

 

Supongo que te gusta

Origin blog.csdn.net/oyo775881/article/details/82586534
Recomendado
Clasificación