GUI での画面クリックの検出に問題があります。縦向きでは機能しますが、横向きでは機能しません。以下を参照してください。
いくつかの説明と画像を含むGUI ( Fragment
) があります。続行するには、ユーザーは画面上の任意の場所をタップする必要があります。クリック/タップイベントをキャプチャするためView
に、画面全体を埋めて他の要素の上に座る (トップビュー) を配置し、このビューでクリックをリッスンすると正常に動作します。
問題は、横向きモードの場合、テキストと画像が多くのスペースを占めることです。そのため、全体が でラップされていScrollView
ます。ここから問題が始まります。がアクティブな場合ScrollView
(つまり、スクロールできる/スクロール バーが表示されている場合)、上部のビュー (topview) が消えます。ランドスケープ モードの場合、a 内のコンテンツの高さScrollView
が変更されているようです。実験として、 を に置き換えたView
ところ、 が使用可能になったときにButton
、がButton
縦向きの画面いっぱいから横向きモードの通常の高さに変わりましたScrollView
。
ユーザーが画面をタップしていることを検出する方法はありますか?これは、ScrollView
コントロールを一番上の要素として機能させます。いくつかの方法で GUI を再配置しようとしましたが、成功しませんでした。また、onClick
イベント ハンドラを に追加しようとしましたがScrollView
、これも成功しませんでした。
私のレイアウトは下にあります。私のトップビューは半透明の赤なので、それがカバーする領域を見ることができました.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:clickable="true" >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical" >
<TextView
android:id="@+id/txtInstructions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:padding="10dp"
android:text="@string/instructions"
android:textColor="@color/blue"
android:textSize="20sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:maxWidth="250dp"
android:padding="20dp"
android:src="@drawable/main_camera" />
</LinearLayout>
<View
android:id="@+id/view_to_listen_for_touch"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#88FF0000"
android:clickable="true" />
</RelativeLayout>