No meu aplicativo, a primeira visualização de todas as minhas telas é um EditText, portanto, sempre que vou para uma tela, o teclado na tela é exibido. como posso desativar este popingup e ativá-lo quando clicado manualmente no EditText ????
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
eT.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
}
}
});
código xml:
<ImageView
android:id="@+id/feedPageLogo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_feed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/go" />
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_feed"
android:layout_toRightOf="@id/feedPageLogo"
android:hint="@string/search" />
<TextView
android:id="@+id/feedLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/feedPageLogo"
android:gravity="center_vertical|center_horizontal"
android:text="@string/feed"
android:textColor="@color/white" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsLayout_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/iwant"
android:textColor="@color/black" />
<Button
android:id="@+id/shareButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/share"
android:textColor="@color/black" />
<Button
android:id="@+id/profileButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/profile"
android:textColor="@color/black" />
</LinearLayout>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/feedListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/ButtonsLayout_feed"
android:layout_below="@id/feedLabel"
android:textSize="15dp" >
</ListView>
a terceira visualização (EditText) é onde está o foco.
android
android-edittext
Mosca doméstica
fonte
fonte
Respostas:
A melhor solução está no arquivo Project Manifest (AndroidManifest.xml) , adicione o seguinte atributo na
activity
construçãoExemplo:
<activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden" />
Descrição:
Introduzido em:
Link para o Docs
Observação: os valores definidos aqui (diferentes de "stateUnspecified" e "AdjustUnspecified") substituem os valores definidos no tema.
fonte
Você deve criar uma visualização, acima do EditText, que tenha um foco 'falso':
Algo como :
<!-- Stop auto focussing the EditText --> <LinearLayout android:layout_width="0dp" android:layout_height="0dp" android:background="@android:color/transparent" android:focusable="true" android:focusableInTouchMode="true"> </LinearLayout> <EditText android:id="@+id/searchAutoCompleteTextView_feed" android:layout_width="200dp" android:layout_height="wrap_content" android:inputType="text" />
Nesse caso, usei um LinearLayout para solicitar o foco. Espero que isto ajude.
Funcionou perfeitamente ... graças ao Zaggo0
fonte
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
edittext.setShowSoftInputOnFocus(false);
Agora você pode usar qualquer teclado personalizado de sua preferência.
fonte
As pessoas sugeriram muitas soluções excelentes aqui, mas usei essa técnica simples com meu EditText (nada em java e AnroidManifest.xml é necessário). Basta definir o focusable e focusableInTouchMode como false diretamente no EditText.
<EditText android:id="@+id/text_pin" android:layout_width="136dp" android:layout_height="wrap_content" android:layout_margin="5dp" android:textAlignment="center" android:inputType="numberPassword" android:password="true" android:textSize="24dp" android:focusable="false" android:focusableInTouchMode="false"/>
Minha intenção aqui é usar esta caixa de edição na atividade de bloqueio do aplicativo, onde estou pedindo ao usuário para inserir o PIN e quero mostrar meu PIN pad personalizado. Testado com minSdk = 8 e maxSdk = 23 no Android Studio 2.1
fonte
Adicione o código abaixo em sua classe de atividade.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
O teclado aparecerá quando o usuário clicar em EditText
fonte
Você pode usar o código a seguir para desativar o teclado na tela.
InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(editText.getWindowToken(), 0);
fonte
Duas soluções simples:
A primeira solução é adicionada abaixo da linha de código no arquivo xml de manifesto. No arquivo Manifest (AndroidManifest.xml), adicione o seguinte atributo na construção da atividade
android: windowSoftInputMode = "stateHidden"
Exemplo:
<activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden" />
A segunda solução é adicionar a linha de código abaixo na atividade
//Block auto opening keyboard this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Podemos usar qualquer uma das soluções acima. obrigado
fonte
Declare a variável global para InputMethodManager:
private InputMethodManager im ;
Em onCreate (), defina-o:
im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(youredittext.getWindowToken(), 0);
Defina o onClickListener para esse texto de edição dentro de oncreate ():
youredittext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { im.showSoftInput(youredittext, InputMethodManager.SHOW_IMPLICIT); } });
Isso vai funcionar.
fonte
Use o seguinte código, escreva-o em
onCreate()
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
fonte
experimente ... eu resolvo esse problema usando o código: -
EditText inputArea; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inputArea = (EditText) findViewById(R.id.inputArea); //This line is you answer.Its unable your click ability in this Edit Text //just write inputArea.setInputType(0); }
nada que você possa inserir pela calculadora padrão em nada, mas você pode definir qualquer string.
tente
fonte
Obrigado @AB pela boa solução
android:focusableInTouchMode="false"
neste caso, se você desabilitar o teclado na edição de texto, basta adicionar android: focusableInTouchMode = "false" na tagline de edição de texto .
funcionam para mim no Android Studio 3.0.1 minsdk 16, maxsdk26
fonte
A.B
a resposta? Ou é uma resposta à pergunta original? Se este for um comentário paraA.B
a resposta, você deve usar a opção de comentário fornecida por StackOverflow e excluir esta resposta da pergunta original.Experimente com isto:
EditText yourEditText= (EditText) findViewById(R.id.yourEditText); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
Para fechar, você pode usar:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
Experimente assim em seu código:
ed = (EditText)findViewById(R.id.editText1); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(ed.getWindowToken(), 0); ed.setOnClickListener(new OnClickListener() { public void onClick(View v) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(ed, InputMethodManager.SHOW_IMPLICIT); } });
fonte
A única coisa que você precisa fazer é adicionar
android:focusableInTouchMode="false"
ao EditText em xml e pronto. (Se alguém ainda precisar saber como fazer isso da maneira mais fácil)fonte
Bem, eu tive o mesmo problema e apenas resolvi com focalizável no arquivo XML.
<EditText android:cursorVisible="false" android:id="@+id/edit" android:focusable="false" android:layout_width="match_parent" android:layout_height="wrap_content" />
Você provavelmente também está procurando por segurança. Isso também ajudará nisso.
fonte
Use o seguinte código em seu
onCreate()
método-editText = (EditText) findViewById(R.id.editText); editText.requestFocus(); editText.postDelayed(new Runnable() { public void run() { InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.hideSoftInputFromWindow( editText.getWindowToken(), 0); } }, 200);
fonte
Para usuários Xamarin:
[Activity(MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait, WindowSoftInputMode = SoftInput.StateHidden)] //SoftInput.StateHidden - disables keyboard autopop
fonte
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true"> <requestFocus/> </TextView> <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/>
fonte
Se você estiver usando o Xamarin, você pode adicionar este
Activity[(WindowSoftInputMode = SoftInput.StateAlwaysHidden)]
depois disso, você pode adicionar esta linha no método OnCreate ()
youredittext.ShowSoftInputOnFocus = false;
Se o dispositivo de destino não suportar o código acima, você pode usar o código abaixo no evento de clique EditText
InputMethodManager Imm = (InputMethodManager)this.GetSystemService(Context.InputMethodService); Imm.HideSoftInputFromWindow(youredittext.WindowToken, HideSoftInputFlags.None);
fonte
Descobri que o seguinte padrão funciona bem para mim no código em que desejo mostrar uma caixa de diálogo para obter a entrada (por exemplo, a string exibida no campo de texto é o resultado de seleções feitas a partir de uma lista de caixas de seleção em uma caixa de diálogo, em vez de texto digitado através do teclado).
Os cliques iniciais no campo de texto produzem uma mudança de foco, um clique repetido produz um evento de clique. Então, eu substituo ambos (aqui, não refatorei o código para ilustrar que os dois manipuladores fazem a mesma coisa):
tx = (TextView) m_activity.findViewById(R.id.allergymeds); if (tx != null) { tx.setShowSoftInputOnFocus(false); tx.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if (hasFocus) { MedicationsListDialogFragment mld = new MedicationsListDialogFragment(); mld.setPatientId(m_sess.getActivePatientId()); mld.show(getFragmentManager(), "Allergy Medications Dialog"); } } }); tx.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MedicationsListDialogFragment mld = new MedicationsListDialogFragment(); mld.setPatientId(m_sess.getActivePatientId()); mld.show(getFragmentManager(), "Allergy Medications Dialog"); } }); }
fonte
Em um aplicativo Android que eu estava construindo, tinha três
EditText
sLinearLayout
dispostos horizontalmente. Tive que evitar que o teclado virtual aparecesse quando o fragmento carregasse. Além de definirfocusable
efocusableInTouchMode
verdadeiro noLinearLayout
, tive que definirdescendantFocusability
parablocksDescendants
. EmonCreate
, eu chameirequestFocus
oLinearLayout
. Isso evitou que o teclado apareça quando o fragmento é criado.Layout -
<LinearLayout android:id="@+id/text_selector_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="3" android:orientation="horizontal" android:focusable="true" android:focusableInTouchMode="true" android:descendantFocusability="blocksDescendants" android:background="@color/black"> <!-- EditText widgets --> </LinearLayout>
Em
onCreate
-mTextSelectorContainer.requestFocus();
fonte
Se alguém ainda está procurando a solução mais fácil, defina o seguinte atributo como
true
em seu layout paiandroid:focusableInTouchMode="true"
Exemplo:
<android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true"> ....... ...... </android.support.constraint.ConstraintLayout>
fonte
Use isto para ativar e desativar EditText ....
InputMethodManager imm; imm = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (isETEnable == true) { imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); ivWalllet.setImageResource(R.drawable.checkbox_yes); etWalletAmount.setEnabled(true); etWalletAmount.requestFocus(); isETEnable = false; } else { imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0); ivWalllet.setImageResource(R.drawable.checkbox_unchecked); etWalletAmount.setEnabled(false); isETEnable = true; }
fonte
Tente esta resposta,
editText.setRawInputType(InputType.TYPE_CLASS_TEXT); editText.setTextIsSelectable(true);
Nota: apenas para API 11+
fonte
private InputMethodManager imm; ... editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.onTouchEvent(event); hideDefaultKeyboard(v); return true; } }); private void hideDefaultKeyboard(View et) { getMethodManager().hideSoftInputFromWindow(et.getWindowToken(), 0); } private InputMethodManager getMethodManager() { if (this.imm == null) { this.imm = (InputMethodManager) getContext().getSystemService(android.content.Context.INPUT_METHOD_SERVICE); } return this.imm; }
fonte
para qualquer visualização de texto em sua atividade (ou crie uma visualização de texto vazia falsa com android: layout_width = "0dp" android: layout_height = "0dp") e adicione para esta visualização de texto a seguir: android: textIsSelectable = "true"
fonte
Simples, basta remover a tag "" do arquivo xml
fonte
Só precisa adicionar uma propriedade
android:focusable="false"
em particularEditText
no xml do layout. Em seguida, você pode escrever listner de cliquesEditText
sem pop-up do teclado.fonte
O problema pode ser classificado usando, Não há necessidade de definir editText inputType para quaisquer valores, apenas adicione a linha abaixo, editText.setTextIsSelectable (true);
fonte
inputType
. Mas parece que seria bom saber se eu tivesse seguido a outra resposta, então, mesmo que você insista em mantê-la como sua própria resposta, considere deixar um comentário lá mesmo assim.