月別アーカイブ: 2011年4月

自作ViewをLayout xmlで使うには

Viewクラスなどを継承した自作ComponentをLayoutのxmlで使用するには、コンストラクタにAttributeSetを追加する必要があるみたい

/**

* XMLファイルから生成される場合に使用されるコンストラクタ

* @param context {@link Context}

* @param attr {@link AttributeSet}

*/

public ActionView(Context context, AttributeSet attr) {

super(context, attr);

this.mmmain = (MindMapMain)context;

this.setOnTouchListener(this);

gestureDetector = new GestureDetector(getContext(), this);

}

方法が分からなくてlayout xmlでは出来ないのかと思ってあきらめかけた。

Viewを継承してとか当たり前なんで出来ないとか、あんまりだなと思っていたけど、自分が方法を見つけきれていないだけだった。

 

ソフトウェアキーボードの表示、非表示

ソフトウェアキーボードの表示/非表示が自動では行われなかったので下記を実装。

EditTextにフォーカスがあたった場合に、ソフトウェアキーボードを表示して
EditTextからフォーカスがはずれた場合に、ソフトウェアキーボードを非表示にする


nodeAddText = new EditText(this);
nodeAddText.setOnFocusChangeListener(new View.OnFocusChangeListener(){
 @Override
  public void onFocusChange(View v, boolean flag){

    //フォーカスが外れた場合、ソフトウェアキーボードを非表示
   if(flag == false){
    final InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(v.getWindowToken(),0);

   } else {

    //フォーカスを取得した場合、ソフトウェアキーボードを表示
    final InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(v,0);
   }
  }