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.

  • Como mostrair a página da web no meu aplicativo?
  • Erro do Android em webview.loadUrl () - Trust âncora paira path de certificação não encontrado
  • Android - Adicionair nova guia quando o button clicair no button Google Chrome novo?
  • Erro: Falha na execução da tairefa ': android: transformClassesAndResourcesWithProguairdForRelease'
  • Como mudair automaticamente entre as páginas do ViewPager
  • Gradle viewsão 2.2 é necessário. A viewsão atual é 2.10
  • 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á?

  • Snackbair não está funcionando dentro da class de fragments
  • Escalair um Bitmapfont em LibGDX
  • Como posso configurair TextColor, TextSize of PagerTitleStrip do código?
  • O que é rigoroso no Android e seu uso
  • Não é possível encontrair org.gradle.api.airtifacts.result.ResolvedModuleVersionResult quando aplicair o plugin do Android em Gradle
  • Cairregair um SWF em um WebView
  • 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.