54473


android studioで計算アプリを制作しています。  
計算自体は問題なくできるのですが、edittext欄に値を入力するためのキーボードの挙動がおかしいので困っています。  
AdMobを挿入する前は問題なかったのですが、挿入後に挙動がおかしくなりました。

**挿入前**  
1\. 数値の入力をした後、キーボードの矢印ボタンを押下すると、次の入力欄にカーソルが移ります。  
2\. 最後の入力項目の欄にカーソルが移ると、キーボードの矢印ボタンがチェックマークに変わる。

**挿入後**  
1\. 数値の入力をした後、キーボードの矢印ボタンを押下すると、次の入力欄にカーソルが移ります。（問題なし）  
2\. 最後の入力項目の欄にカーソルが移ってもキーボードの矢印ボタンがチェックマークに変わらない。  
3\. その矢印ボタンを押下すると、画像のようにアルファベットのキーボードが表示されてしまう。

AdMobを挿入する前のキーボードの状態にしたいです。どなたか分かる方ご教示お願い致します。

**AdMob挿入前の画像**  
[![AdMob挿入前](https://i.stack.imgur.com/Bbi1m.png)](https://i.stack.imgur.com/Bbi1m.png)

**AdMob挿入後の画像1**  
[![AdMob挿入後1](https://i.stack.imgur.com/9OTu0.png)](https://i.stack.imgur.com/9OTu0.png)

**AdMob挿入後の画像2**  
[![AdMob挿入後2](https://i.stack.imgur.com/NMWq3.png)](https://i.stack.imgur.com/NMWq3.png)


CC BY-SA 4.0
2019-04-25T01:43:54.917
54461
2019-04-25T08:30:58.660
2019-04-25T02:29:59.423
3060
29720
question
android java admob
AndroidアプリにAdMobを追加すると表示キーボードが変わってしまう


解決方法が見つかりましたので、自分で回答します。

質問に対する答えとしては少しズレてますが、自分としてはこの方法で解決したと考えました。

キーボードに表示される矢印ボタンをチェックマークに変える方法の代わりに画面のキーボード以外の部分をタップすればキーボードが消える仕様にしました。

キーボード以外の部分をタップすることで、layoutviewにフォーカスする方法を取りました。  
xml

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main_layout3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ...
        android:focusableInTouchMode="true">
    
[/code]

java

[code]

    // キーボード表示を制御するためのオブジェクト
    InputMethodManager inputMethodManager;
    // 背景のレイアウト
    private LinearLayout mainLayout;
    
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.cal_bending_moment);
    
            // キーボード表示を制御するためのオブジェクト
            inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            mainLayout = (LinearLayout) findViewById(R.id.main_layout3);
    .....
    @Override
        public boolean onTouchEvent(MotionEvent event) {
            // キーボードを隠す
            inputMethodManager.hideSoftInputFromWindow(mainLayout.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            // 背景にフォーカスを移す
            mainLayout.requestFocus();
    
            return true;
        }
    
[/code]


CC BY-SA 4.0
2019-04-25T08:30:58.660
54473
2019-04-25T08:30:58.660
29720
54461
answer