web-dev-qa-db-ja.com

Android:フォーカスがEditTextにあるときにソフトキーボードを自動的に表示する

AlertDialogを使って入力ボックスを表示しています。 AlertDialog.show()を呼び出すと、ダイアログ内のEditTextが自動的にフォーカスされますが、ソフトキーボードは自動的に表示されません。

ダイアログが表示されたときにソフトキーボードを自動的に表示させるにはどうすればよいですか? (そして物理的/ハードウェアキーボードはありません)。検索ボタンを押してグローバル検索を起動したときと同様に、ソフトキーボードが自動的に表示されます。

315

EditTextAlertDialogにフォーカスリスナーを作成してから、AlertDialogWindowを取得できます。そこからsetSoftInputModeを呼び出してソフトキーボードを表示させることができます。

final AlertDialog dialog = ...;

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});
289

キーボードの使用法を示すために:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

キーボードの使用を隠すために:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(),0); 
215
horkavlna

ダイアログを作成した直後にソフトキーボードを要求できます(SDKでテスト - r20)

// create dialog
final AlertDialog dialog = ...; 

// request keyboard   
dialog.getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
107
Bao Le

私は同じ問題を抱えており、以下のコードでそれを解決しました。私はそれがハードウェアキーボードを備えた電話でどう振る舞うかわからない。

// TextEdit
final EditText textEdit = new EditText(this);

// Builder
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Enter text");
alert.setView(textEdit);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        String text = textEdit.getText().toString();
        finish();
    }
});

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        finish();
    }
});

// Dialog
AlertDialog dialog = alert.create();
dialog.setOnShowListener(new OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(textEdit, InputMethodManager.SHOW_IMPLICIT);
    }
});

dialog.show();
24
tidbeck

この例を見つけました http://Android-codes-examples.blogspot.com/2011/11/show-or-hide-soft-keyboard-on-opening.html 次のコードをalert.show()の直前に追加します。

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
22
Jurie Otto
<activity
    ...
    Android:windowSoftInputMode="stateVisible" >
</activity>

または

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
16
ahtartam

他の回答からのコードの断片は機能しますが、特にAlertDialog.Builderを使用していて 公式ダイアログチュートリアル に従っていない場合は、コード内のどこにそれらを配置するかは必ずしも明らかではありません。 final AlertDialog ...alertDialog.show()を使わないでください。

alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

より好ましい

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

SOFT_INPUT_STATE_ALWAYS_VISIBLEはフォーカスがEditTextから外れるとキーボードを非表示にするので、ユーザーがホームスクリーンに戻ったり最近のアプリを表示したりしても、SHOW_FORCEDは明示的に閉じるまでキーボードを表示し続けます。

以下は、XMLで定義されたEditTextを使用してカスタムレイアウトを使用して作成されたAlertDialogの作業コードです。また、キーボードに「実行」キーを設定して、プラスボタンをトリガーできるようにします。

alert_dialog.xml:

<RelativeLayout
Android:id="@+id/dialogRelativeLayout"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" >

    <!-- Android:imeOptions="actionGo" sets the keyboard to have a "go" key instead of a "new line" key. -->
    <!-- Android:inputType="textUri" disables spell check in the EditText and changes the "go" key from a check mark to an arrow. -->
    <EditText
        Android:id="@+id/editText"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="16dp"
        Android:layout_marginLeft="4dp"
        Android:layout_marginRight="4dp"
        Android:layout_marginBottom="16dp"
        Android:imeOptions="actionGo"
        Android:inputType="textUri"/>

</RelativeLayout>

AlertDialog.Java:

import Android.app.Activity;
import Android.app.Dialog;
import Android.content.DialogInterface;
import Android.graphics.drawable.BitmapDrawable;
import Android.graphics.drawable.Drawable;
import Android.os.Bundle;
import Android.support.annotation.NonNull;
import Android.support.v4.app.DialogFragment;
import Android.support.v7.app.AlertDialog;
import Android.support.v7.app.AppCompatDialogFragment;
import Android.view.KeyEvent;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.WindowManager;
import Android.widget.EditText;

public class CreateDialog extends AppCompatDialogFragment {
    // The public interface is used to send information back to the activity that called CreateDialog.
    public interface CreateDialogListener {
        void onCreateDialogCancel(DialogFragment dialog);    
        void onCreateDialogOK(DialogFragment dialog);
    }

    CreateDialogListener mListener;

    // Check to make sure that the activity that called CreateDialog implements both listeners.
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (CreateDialogListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement CreateDialogListener.");
        }
    }

    // onCreateDialog requires @NonNull.
    @Override
    @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
        LayoutInflater customDialogInflater = getActivity().getLayoutInflater();

        // Setup dialogBuilder.
        alertDialogBuilder.setTitle(R.string.title);
        alertDialogBuilder.setView(customDialogInflater.inflate(R.layout.alert_dialog, null));
        alertDialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mListener.onCreateDialogCancel(CreateDialog.this);
            }
        });
        alertDialogBuilder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mListener.onCreateDialogOK(CreateDialog.this);
            }
        });

        // Assign the resulting built dialog to an AlertDialog.
        final AlertDialog alertDialog = alertDialogBuilder.create();

        // Show the keyboard when the dialog is displayed on the screen.
        alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

        // We need to show alertDialog before we can setOnKeyListener below.
        alertDialog.show();

        EditText editText = (EditText) alertDialog.findViewById(R.id.editText);

        // Allow the "enter" key on the keyboard to execute "OK".
        editText.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // If the event is a key-down event on the "enter" button, select the PositiveButton "OK".
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                    // Trigger the create listener.
                    mListener.onCreateDialogOK(CreateDialog.this);

                    // Manually dismiss alertDialog.
                    alertDialog.dismiss();

                    // Consume the event.
                    return true;
                } else {
                    // If any other key was pressed, do not consume the event.
                    return false;
                }
            }
        });

        // onCreateDialog requires the return of an AlertDialog.
        return alertDialog;
    }
}
13
Soren Stoutner

まあ、これはかなり古い投稿です、まだ追加するものがあります。
これらは私がキーボードを制御下に置くのを手助けする2つの簡単な方法です、そして、それらはちょうど完璧に働きます:

キーボードを表示

public void showKeyboard() {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    View v = getCurrentFocus();
    if (v != null)
        imm.showSoftInput(v, 0);
}

キーボードを隠す

public void hideKeyboard() {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    View v = getCurrentFocus();
    if (v != null)
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
11
sberezin

私はこれをうまく機能させるのが難しいと思ったので、yukuの解決策についていくつかの追加情報を指摘しましょう! AlertDialog.BuilderからAlertDialogオブジェクトを取得する方法まあ、それは私のalert.show()実行の結果です:

final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());
alert.setView(input);

// do what you need, like setting positive and negative buttons...

final AlertDialog dialog = alert.show();

input.setOnFocusChangeListener(new OnFocusChangeListener() {
   @Override
   public void onFocusChange(View v, boolean hasFocus) {
      if(hasFocus) {
         dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
      }
   }
});
9
user1344313

手動で非表示にしてIMEを表示することを扱う この の議論を見てください。しかし、私の考えでは、焦点を絞ったEditTextがIMEを起動していないのであれば、それはあなたがAlertDialog.show()または実際に画面が表示される前に呼び出される他のメソッドでOnCreate()を呼び出しているからです。それをOnPostResume()に移動することでそれを修正するはずです私は信じています。

7
jqpubliq

はい、あなたはsetOnFocusChangeListenerを使ってそれを行うことができます。

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});
6
Sachin Surjan

誰かが手に入れている場合:

型Activityから非静的メソッドgetSystemService(String)への静的参照を作成できません

GetSystemService呼び出しにコンテキストを追加してみてください。

そう

InputMethodManager imm = 
(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
3
Ryan Wittenburg

試してみてください:

editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
1
ungalcrys

誰かが興味を持った場合に備えてNice kotlin-esqe拡張関数を作成しました

fun Activity.hideKeyBoard() {
    val view = this.currentFocus
    val methodManager = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    assert(view != null)
    methodManager.hideSoftInputFromWindow(view!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}

fun Activity.showKeyboard() {
    val view = this.currentFocus
    val methodManager = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    assert(view != null)
    methodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
1
i am E

キーボードを表示するには、私にとっては、次のようにしなければなりませんでした

Android TextField:プログラムでフォーカス+ソフト入力を設定します

基本的に解決策は以下の通りです

@Override
public void onResume() {
    super.onResume();
    //passwordInput.requestFocus(); <-- that doesn't work
    passwordInput.postDelayed(new ShowKeyboard(), 325); //250 sometimes doesn't run if returning from LockScreen
}

ShowKeyboardはどこにありますか

private class ShowKeyboard implements Runnable {
    @Override
    public void run() {
        passwordInput.setFocusableInTouchMode(true);
        //passwordInput.requestFocusFromTouch(); //this gives touch event to launcher in background -_-
        passwordInput.requestFocus();
        getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(passwordInput, 0);
    }
}

入力が成功したら、キーボードも隠します。

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE))
                    .hideSoftInputFromWindow(getView().getWindowToken(), 0);
1
EpicPandaForce

問題は、テキストを入力する場所が最初は隠されている(またはネストされているか何か)ため、AlertDialogが自動的にフラグWindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IMまたはWindowManager.LayoutParams.FLAG_NOT_FOCUSABLEを設定して、物事が表示されないようにすることです。

これを修正する方法は、以下を追加することです。

(...)
// Create the dialog and show it
Dialog dialog = builder.create()
dialog.show();

// After show (this is important specially if you have a list, a pager or other view that uses a adapter), clear the flags and set the soft input mode
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
1
Allan Veloso

最初の質問はダイアログに関するもので、私のEditTextは定期的に見ています。とにかく、私はこれがあなたのほとんどのためにもうまくいくはずだと思います。だからここに私のために働くものがある(上記の提案された最高評価の方法は私には何もしなかった)。これを行うカスタムのEditViewがあります(サブクラス化は必要ではありませんが、ビューが表示されたときにフォーカスをつかみたいので、私の目的には便利です)。

これは実際にはtidbecksの回答とほぼ同じです。投票がゼロになったので、私は実際にはまったく彼の答えに気づかなかった。それから私はちょうど彼の投稿にコメントしようとしていました、しかしそれは長すぎたでしょうから、私はとにかくこの投稿をすることをやめました。 tidbeckは、彼がそれがキーボードを持っている装置でどのように動作するかわからないと指摘します。どちらの場合も、動作はまったく同じであるように思われることを確認できます。ポートレートモードではソフトウェアキーボードがポップアップされ、ランドスケープでは表示されません。物理的なキーボードをスライドさせてもしなくても、私の携帯電話には何の効果もありません。

というのも、私は個人的に、InputMethodManager.SHOW_FORCEDを使用することを選択したときの動作が少しぎこちないと感じたためです。私はそれが機能したかったのでこれは機能します。キーボードは向きに関係なく表示されますが、少なくとも私のデバイスではハードウェアキーボードがスライドされているとポップアップしません。

import Android.app.Service;
import Android.content.Context;
import Android.util.AttributeSet;
import Android.view.View;
import Android.view.inputmethod.InputMethodManager;
import Android.widget.EditText;

public class BringOutTheSoftInputOnFocusEditTextView extends EditText {

    protected InputMethodManager inputMethodManager;

    public BringOutTheSoftInputOnFocusEditTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public BringOutTheSoftInputOnFocusEditTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public BringOutTheSoftInputOnFocusEditTextView(Context context) {
        super(context);
        init();
    }

    private void init() {
        this.inputMethodManager = (InputMethodManager)getContext().getSystemService(Service.INPUT_METHOD_SERVICE);
        this.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    BringOutTheSoftInputOnFocusEditTextView.this.inputMethodManager.showSoftInput(BringOutTheSoftInputOnFocusEditTextView.this, InputMethodManager.SHOW_FORCED);
                }
            }
        });
    }

    @Override
    protected void onVisibilityChanged(View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        if (visibility == View.VISIBLE) {
            BringOutTheSoftInputOnFocusEditTextView.this.requestFocus();
        }
    }

}
1
Timo

なぜこの回答 - 上記の解決策はあなたのキーボードを表示しますがあなたがEditTextname__以外のどこかをクリックしても消えないでしょうから。そのため、EditTextname__がフォーカスを失ったときにキーボードを消すには、何かをする必要があります。

これを実現するには、次の手順を実行します。

  1. 次の属性を追加して、親ビュー(アクティビティのコンテンツビュー)をクリック可能およびフォーカス可能にします。

        Android:clickable="true" 
        Android:focusableInTouchMode="true" 
    
  2. HideKeyboard()メソッドを実装する

        public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(),InputMethodManager.HIDE_IMPLICIT_ONLY );
        }
    
  3. 最後に、あなたのedittextのonFocusChangeListenerを設定してください。

        edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard(v);
                }
            }
        });
    
0
Darpan

たくさん試しましたが、これは私のために働いていたものです(kotlin):

        val dialog = builder.create()
        dialog.setOnShowListener {
            nameEditText.requestFocus()
            val s = ContextCompat.getSystemService(requireContext(), InputMethodManager::class.Java)
            s?.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)
        }

        dialog.setOnDismissListener {
            val s = ContextCompat.getSystemService(requireContext(), InputMethodManager::class.Java)
            s?.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
        }

        dialog.show()
0
lorenzo

これらのメソッドをUtilクラスに入れて、どこでも使用できます。

コトリン

fun hideKeyboard(activity: Activity) {
    val view = activity.currentFocus
    val methodManager = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    assert(view != null)
    methodManager.hideSoftInputFromWindow(view!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}

private fun showKeyboard(activity: Activity) {
    val view = activity.currentFocus
    val methodManager = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    assert(view != null)
    methodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}

Java

public static void hideKeyboard(Activity activity) {
    View view = activity.getCurrentFocus();
    InputMethodManager methodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    assert methodManager != null && view != null;
    methodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}

private static void showKeyboard(Activity activity) {
    View view = activity.getCurrentFocus();
    InputMethodManager methodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    assert methodManager != null && view != null;
    methodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}
0
Khemraj

これを試して

SomeUtils.Java

public static void showKeyboard(Activity activity, boolean show) {
    InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);

    if(show)
        inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
    else
        inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
}
0
GameBug

私はこの質問が古いことを知っています拡張機能を使用すると、編集テキストのキーボードを表示するためのきれいな方法だと思います

ここに、編集テキストのキーボードを表示するために使用する方法があります。

kotlin code:単にedittext.showKeyboard()を呼び出す必要があります

fun EditText.showKeyboard() {
  post {
    requestFocus()
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
  }
}

Javaコード:

public static void showKeyboard(EditText editText) {
    editText.post(new Runnable() {
      @Override
      public void run() {
        editText.requestFocus();
        InputMethodManager imm = (InputMethodManager) editText.getContext()
            .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
      }
    });
  }
0
A.easazadeh

これは少し注意が必要です。私はこのようにしてそれが働いた。

1.ウィンドウからソフト入力を非表示にする最初の呼び出し。ソフトキーボードが表示されている場合はソフト入力を隠し、表示されていない場合は何もしません。

2.ダイアログを表示する

3.単純にソフト入力を切り替えるには呼び出します。

コード:

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
//hiding soft input
inputManager.hideSoftInputFromWindow(findViewById(Android.R.id.content).getWind‌​owToken(), 0);
//show dialog
yourDialog.show();
//toggle soft input
inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.SHOW_IMPLICIT);
0
FRR

horkavlna が書いたように、

切り替え

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

キーボードを隠す

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 

メソッドは動作します。しかし、showの変種は私の場合はうまくいきません。そこでonCreate()hideKeyboard(editText);を入れてからonStart()toggleKeyboard(editText);と書き、onStop()hideKeyboard(editText);と書きます。

問題が3つあります。

1)アプリケーションが画面をオフにして起動すると、それはキーボードを隠します。

2)あなたが画面をオンにするたびに、それはキーボードが表示されます。

3)アプリケーションの終了後、Androidのメイン画面にキーボードが表示されます。

いくつかのテストの後、これらのメソッドを削除し、AndroidManifestタグ内のactivityAndroid:windowSoftInputMode="stateVisible"またはAndroid:windowSoftInputMode="stateAlwaysHidden"を書きました。

0
CoolMind

これはあなたにとって良いサンプルです。

<?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="vertical" >

    <ScrollView
        Android:id="@+id/scrollID"
        Android:layout_width="fill_parent"
        Android:layout_height="0dip"
        Android:layout_weight="1" >

        <LinearLayout
            Android:id="@+id/test"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical" >
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:baselineAligned="true"
        Android:orientation="horizontal"
        Android:paddingBottom="5dp"
        Android:paddingLeft="5dp"
        Android:paddingRight="5dp"
        Android:weightSum="1" >

        <EditText
            Android:id="@+id/txtInpuConversation"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_weight="0.5"
            Android:hint="@string/edt_Conversation" >

            <requestFocus />
        </EditText>

        <Button
            Android:id="@+id/btnSend"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_weight="0.5"
            Android:text="@string/btn_Conversation" />
    </LinearLayout>

</LinearLayout>
0
A.A