2017-01-31 5 views
0

В настоящее время в моей деятельности есть поле EditText, которое принимает числа. Клавиатура номера отображается, как ожидается, при нажатии на поле для ее редактирования. Однако, когда я нажимаю кнопку «домой», а затем снова открываю приложение, клавиатура переключается на полноразмерную клавиатуру, и я не могу редактировать текст. При нажатии на поле EditText коротко отображается цифровая клавиатура, а затем отображается полный размер. Есть предположения?Android - Клавиатура для поля EditText переключает с номеров на полную клавиатуру

public void CreatePlaylistView() 
{ 
    ArrayAdapter<FlowTrackSlot> ftsAdapter = 
      new ArrayAdapter<FlowTrackSlot>(this, 0, playlistSlots) { 


       @Override 
       public View getView(final int position, 
            View convertView, 
            ViewGroup parent) { 

        final FlowTrackSlot currentSlot = playlistSlots.get(position); 

        ViewHolder viewHolder = null; 
        if(convertView == null) { 
         convertView = getLayoutInflater() 
           .inflate(R.layout.item, null, false); 

         viewHolder = new ViewHolder(); 
         viewHolder.slotTrackName = 
           (TextView)convertView.findViewById(R.id.slotTrackName); 
         viewHolder.slotTrackWeight = 
           (EditText)convertView.findViewById(R.id.slotTrackWeight); 

         convertView.setTag(viewHolder); 


         viewHolder.slotTrackName.setText(currentSlot.playlistTrack.track.name); 

         final ViewHolder finalViewHolder = viewHolder; 
         viewHolder.slotTrackWeight.addTextChangedListener(new TextWatcher() { 
          @Override 
          public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

          } 

          @Override 
          public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

          } 

          @Override 
          public void afterTextChanged(Editable editable) { 

           try { 
            if(currentSlot.weight != Integer.parseInt(editable.toString())) 
            { 
             currentSlot.weight = Integer.parseInt(editable.toString()); 
             finalViewHolder.slotTrackWeight.setText(editable.toString()); 

            } 


           } catch (NumberFormatException e) { 
            if(currentSlot.weight != 0) 
            { 
             currentSlot.weight = 0; 
             finalViewHolder.slotTrackWeight.setText("0"); 

            } 
           } 
          } 
         }); 
        } 
        else 
        { 
         viewHolder = (ViewHolder)convertView.getTag(); 
        } 

        return convertView; 

       } 
      }; 

    ListView viewTrackPlaylist = new ListView(this); 

    setContentView(viewTrackPlaylist); 
    viewTrackPlaylist.setAdapter(ftsAdapter); 
} 

EDIT: добавлен макеты activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </LinearLayout> 
</RelativeLayout> 

item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:focusableInTouchMode="true"> 

<TextView 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/slotTrackName" 
    android:layout_weight="0.41" 
    android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" 
    android:textSize="36sp" 
    android:lineSpacingExtra="10sp" 
    android:fontFamily="sans-serif" /> 

<EditText 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:id="@+id/slotTrackWeight" 
    android:text="100" 
    android:textSize="24sp" 
    android:singleLine="true" 
    android:selectAllOnFocus="true" /> 
</LinearLayout> 
+0

опубликовать XML, а также –

+0

Есть ли какие-либо другие, кроме того, вы упомянули редактировать тексты? Как правило, клавиатура появляется в ответ на усиление фокусировки редактируемого поля. поделиться своим макетом – Dibzmania

+0

Я только что разместил макеты. У меня есть только 1 поле EditText как часть макета item.xml. Однако я создаю список в макете activity_main.xml и заполняю его, используя item.xml для каждого элемента. Таким образом, на экране есть несколько полей EditText. – user998797

ответ

0

нашел эту полезную реализацию, показывает лучшие клавиатуры и пределы входных символов.

<EditText 
    android:inputType="phone" 
    android:digits="1234567890" 
/> 

Вы можете сделать это программно, как показано ниже:

yourEditText.setInputType(InputType.TYPE_CLASS_PHONE); 

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890"); 
yourEditText.setKeyListener(keyListener); 
+0

Я только что дал это выстрел. К сожалению, проблема все еще сохраняется. Спасибо хоть. – user998797

 Смежные вопросы

  • Нет связанных вопросов^_^