2017-01-31 17 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:

<?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

を同様 –

+0

をあなたのXMLを投稿し、あなたが言及したもの以外の他の編集テキストはありますか?一般的に、キーボードは編集可能なフィールドのフォーカスゲインに応じて表示されます。 – Dibzmania

+0

レイアウトを投稿しました。私はitem.xmlレイアウトの一部として1つのEditTextフィールドしか持っていません。しかし、私はactivity_main.xmlレイアウトでリストを作成し、各要素に対してitem.xmlを使用してそれを設定します。画面には複数のEditTextフィールドがあります。 – user998797

答えて

0

添加レイアウト 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は、この便利な実装を発見し、より良いキーボードを表示し、入力文字を制限します。

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

あなたは以下のようにプログラム的にそれを行うことができます。

yourEditText.setInputType(InputType.TYPE_CLASS_PHONE); 

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

私はちょうどそのショットを与えた。残念ながら、この問題は依然として残っています。しかし、ありがとう。 – user998797

関連する問題