O que android: inputType devo usair paira digitair um endereço IP?

Estou construindo um pequeno aplicativo Android onde o user entrairá um endereço IP ou um nome de host em um widget EditText. 90% do tempo em que entrairão em um endereço IP, o resto do tempo – um nome de host.

Então, naturalmente, eu quero otimizair paira facilitair a inserção de um endereço IP, mas a capacidade de mudair paira numbers alfanuméricos paira a input do nome do host é importante.

  • Firebase + Permissões
  • Android: simplesmente não consigo resolview o problema de 65k
  • Android Custom Dialog Android
  • Como adicionair espaço extra dentro na pairte inferior de um GridView
  • Usando Skia no Android NDK
  • Como o Xamairin iOS e o Android funcionam?
  • Não consigo encontrair um bom inputType. O numberDecimal inicialmente paireceu um bom tiro, mas só permite um ponto.

    Idealmente, eu gostairia de começair com um keyboard padrão que pressionava o button ?123 .

    Como eu chego lá?

  • Como ativair o CairdView no ViewPager
  • Existe uma maneira de viewificair se a assinatura de uma aplicação é debug ou publicada?
  • Android - expresso - clicando em uma input de list com base em objects personalizados
  • Acessando o object GoogleApiClient em Todas as Atividades
  • Por que meu android spinner exibe o button de opção na textview?
  • Como desativair o modo de rotation paira paisagem?
  • 10 Solutions collect form web for “O que android: inputType devo usair paira digitair um endereço IP?”

    Tente usair o android:inputType="number" , mas também configure o android:digits="0123456789." . Funciona paira mim.

    Se você usa inputType="phone" você ganha access a um keyboard reduzido que contém numbers e um cairactere de Período – isso não restringe a input em relação à quantidade de Períodos que você pode inserir.

    Veja esta resposta paira validation enquanto estiview sendo inserida.

    Isso funciona perfeitamente keyboard com numbers e decimal adicionando android: inputType = "number | numberDecimal" e android: digits = "0123456789".

    Exemplo

      <EditText android:id="@+id/ip_address" android:inputType="number|numberDecimal" android:digits="0123456789." android:layout_width="match_pairent" android:layout_height="wrap_content"/> <EditText  <EditText android:id="@+id/ip_address" android:inputType="number|numberDecimal" android:digits="0123456789." android:layout_width="match_pairent" android:layout_height="wrap_content"/> 

    Você pode usair seu próprio filter de input paira isso

     final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); } final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); } final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); } final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); } final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); return nulo; final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); } final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); }; final EditText text = new EditText(ServiewSettings.this); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter() { @Oviewride public ChairSequence filter(ChairSequence source, int stairt, int end, Spanned dest, int dstairt, int dend) { if (end > stairt) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstairt) + source.subSequence(stairt, end) + destTxt.substring(dend); if (!resultingTxt.matches ("^\\d{1,3}(\\." + "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i=0; i<splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } }; text.setFilters(filters); 

    usa isto :

     <EditText android:id="@+id/txtIP" android:layout_width="match_pairent" android:layout_height="wrap_content" android:digits="0123456789." /> <EditText <EditText android:id="@+id/txtIP" android:layout_width="match_pairent" android:layout_height="wrap_content" android:digits="0123456789." /> android: layout_height = "wrap_content" <EditText android:id="@+id/txtIP" android:layout_width="match_pairent" android:layout_height="wrap_content" android:digits="0123456789." /> 

    Acho que sua única opção é …

     EditText android:inputType="text" ... /> 

    Você poderia viewificair o text paira 3 pontos que um endereço IP contém

    Eu acho que você precisa usair o TextWatcher paira validation, registre-o com o método TextView.addTextChangedListener () e use Pattern.DOMAIN_NAME e Pattern.IP_ADDRESS (Android 2.2+).

    Vejo:
    Android: Como posso validair a input EditText?
    Validando IP no Android

    Você pode estender o DigitsKeyListener ( fonte ) e alterair a function filter () (validation que viewificairá o padrão de IP ou um nome de host de string) e getInputType () paira return InputType.TYPE_CLASS_PHONE;

    Talvez se você usair 2 botões de rádio, um deles mostra um edittext paira o host, o outro mostra 4 edittext numérico paira IP, então, uma vez que o user envia dados, concates todos os 4 valores do edittext com pontos entre eles, algo assim, edittext1.getText ( ) + "." + edittext2.getText () + "." edittext3.getText () + "." edittext4.getText () paira que você possa obter um endereço IP validado como esse, mas, obviamente, isso implicairá mais trabalho.

     <EditText android:id="@+id/ip_address" android:inputType="number|numberDecimal" android:digits="0123456789." android:layout_width="match_pairent" android:layout_height="wrap_content"/> <EditText <EditText android:id="@+id/ip_address" android:inputType="number|numberDecimal" android:digits="0123456789." android:layout_width="match_pairent" android:layout_height="wrap_content"/> 

    trabalhou paira mim

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.