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

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

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

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

Q&A

解決済

1回答

2926閲覧

AndroidのSurfaceViewにおけるonTouchEventについて

meru

総合スコア12

Android

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

0グッド

0クリップ

投稿2016/06/20 09:43

現在SurfaceViewを使用してAndroidアプリを作成しています。
以前はActivityでSurfaceView(QuizView)を直接setContentViewして画面を表示していましたが、新たにmain.xmlにSurfaceViewを記載してActivityでsetContentView(R.layout.main)と書いたところ、SurfaceView(QuizView)でのonTouchEventが呼び出されなくなりました。
画面をタッチしたときの反応がなくなった以外は、表示など問題ありません。

MainActivity側のonTouchEventは呼び出されています。
SurfaceViewのコンストラクタでは「setFocusable(true)」「requestFocus()」を実行していますが、「hasFocus」の結果が常に「false」となっていることが原因なのでしょうか?

SurfaceViewでのonTouchEventが呼び出されるようにする方法を教えていただけませんでしょうか。

以下「main.xml」の記述内容です。


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">

<SurfaceView android:id="@+id/quizView" android:layout_width="match_parent" android:layout_height="match_parent"> </SurfaceView>
</LinearLayout>

以下、「MainActivity.java」の記述内容の一部です。


setContentView(R.layout.main);
SurfaceView surfaceView = (SurfaceView)findViewById(R.id.quizView);
QuizView quizView = new QuizView(this, surfaceView);


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

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

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

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

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

guest

回答1

0

ベストアンサー

QuizViewがSurfaceViewなんですか?
質問は人に伝わるように書きましょうね。

onTouchViewはなんらかのViewにaddViewされていない限り呼ばれないですよ。

xmlに自作Viewを追加したい場合は自作Viewの完全修飾名をタグに指定すると良いですよ。
この時、自作ViewはContextとAttributeSetを引数に持つコンストラクタを実装する必要があります。

投稿2016/06/20 10:49

yona

総合スコア18155

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

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

meru

2016/06/21 01:47

QuizViewがSurfaceViewです。すみませんでした。 xmlのタグをQuizViewの完全修飾名に変更して、QuizViewにContextとAttributeSetを引数に持つコンストラクタを実装したところ、onTouchViewが呼び出されるようになりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問