如何在日期选择器编辑文本上永久隐藏键盘

时间:2016-07-05 08:24:49

标签: java android android-studio calendar keyboard

我想永久地从Keyboard DatePicker停用EditText,以便我手动选择DatePicker对话框中的日期...

这是我的java代码:

import android.annotation.TargetApi;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.*;
import android.app.Dialog;
import android.app.FragmentTransaction;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EdgeEffect;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.Date;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    Spinner spinner;
    EditText Datetxt;
    int Date_x,Month_x,Year_x;
     static final int DIALOG_ID=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner=(Spinner)findViewById(R.id.spinner);
        ArrayAdapter adapter=ArrayAdapter.createFromResource(this,R.array.Gender,android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
        showDialogonClick();
    }
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        //Toast.makeText(MainActivity.this, "you select", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }

    public void showDialogonClick()
    {
        Datetxt=(EditText)findViewById(R.id.Datetxt);
        Datetxt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(DIALOG_ID);
            }

        }

        );
}
    protected Dialog onCreateDialog(int id){
        if(id==DIALOG_ID)
            return new DatePickerDialog(this,dpickerListener,Date_x,Month_x,Year_x);
        else return null;
    }
    private DatePickerDialog.OnDateSetListener dpickerListener= new DatePickerDialog.OnDateSetListener() {
        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
        @Override
        public void onDateSet(DatePicker datePicker, int Day, int Month, int Year) {
            Date_x=Day;
            Month_x=Month;
            Year_x=Year;
            //Datetxt.setShowSoftInputOnFocus(false);
            String Date1=Date_x+"."+Month_x+"."+Year_x;
            Datetxt.setText(Date1);

        }
    };

}

当我点击EditText 时,日历和键盘会同时打开。

4 个答案:

答案 0 :(得分:3)

使用这种方式解决问题。

EditText et = (EditText)findViewById(R.id.et);
et.setInputType(InputType.TYPE_NULL);

答案 1 :(得分:3)

您还可以将这些属性添加到xml文件中的EditText

android:focusableInTouchMode="false"
android:inputType="date"

答案 2 :(得分:1)

使用

 myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);

禁用焦点内部NumberPickers的文本视图

另一种方式。在XML中添加:

android:descendantFocusability="blocksDescendants"

答案 3 :(得分:0)

android:focusable="false"
android:hint="@string/history_by_date_example"
android:inputType="none"

在xml文件中将inputType设置为无法打开键盘,您可以点击edittext

打开日期选择器对话框