質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

992閲覧

オーバーレイ中のEditTextタッチ時、キーボードが表示されない。

floatman

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2019/07/06 01:40

前提・実現したいこと

Android javaの質問です。
Serviceでオーバーレイ表示したレイアウトにEditTextを表示させ、その中にEditTextに文字を入力したいです。(PCの最前面に表示され続ける付箋ソフトのようなイメージです)

発生している問題・エラーメッセージ

EditTextをタッチしてもキーボードが表示されません。
現状、オーバーレイ表示やオーバーレイ中のボタンクリックは問題ないです。

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
↑を削除すればEditTextをタッチした際にキーボードが表示されますが、今度はレイアウト外をタッチした際の反応がなくなってしまいます。

EditText内をタッチした時のみFLAG_NOT_FOCUSABLE除外する、
もしくは別の方法でキーボードを表示させるにはどのようなどのような記述をすればよいのでしょうか。

該当のソースコード

public class Activity_Sub1 extends Service {

View view; WindowManager wm; // ***** 追加 ***** WindowManager.LayoutParams params; private float downX; private float downY; private int dpScale; @Override public void onCreate() { super.onCreate(); dpScale = (int) getResources().getDisplayMetrics().density;

}

@Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); LayoutInflater layoutInflater = LayoutInflater.from(this); // ***** 修正 ***** params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT); wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); view = layoutInflater.inflate(R.layout.overlay, null); wm.addView(view, params); view.findViewById(R.id.myView1).setOnTouchListener(moving); EditText et = view.findViewById(R.id.etl); HelloListener listener = new HelloListener(); stopBtn.setOnClickListener(listener); return START_STICKY; } final View.OnTouchListener moving = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { downX = Math.round(event.getRawX()); downY = Math.round(event.getRawY()); if (event.getAction() == MotionEvent.ACTION_DOWN) { return true; } else if (event.getAction() == MotionEvent.ACTION_MOVE) { // ***** 追加 ***** Point displaySize = new Point(); wm.getDefaultDisplay().getSize(displaySize); int centerX = Math.round(downX - displaySize.x / 2); int centerY = Math.round(downY - displaySize.y / 2); params.x = centerX; params.y = centerY; wm.updateViewLayout(view, params); return true; } return false; } }; private class HelloListener implements OnClickListener{ @Override public void onClick(View v){ Log.v("Button","onClick"); int id = v.getId(); EditText et = view.findViewById(R.id.etl); HelloListener listener = new HelloListener(); et.setOnClickListener(listener); }

試したこと

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | の削除

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問