質問内容
以下のコードのように、ScrollViewの背景に画像(ImageView)を配置します。
ScrollView内のConstraintLayoutにはmarginTopを設定しており、マージンの分だけScrollViewの背景が見えるようにしています。
下にスクロールすると、マージン分の背景は隠れていきます。
この時、マージンの分だけ見えているScrollViewの背景にある画像をクリックしてイベントを発生させることは可能でしょうか?
方法・アドバイス等頂きたいです。
ScrollViewが前面に来ているため、背景の画像でクリックイベントを取得することができません。
画像をScrollViewよりも前面にした場合、下スクロールで画像が隠れる動作を実現できません。
前提として、CoordinatorLayoutは使用せずScrollViewで実装したいと考えています。
以上、よろしくお願いいたします。
コード
- MainActivity.xml
xml
1<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 tools:context="jp.co.conol.myapplication.MainActivity"> 7 8 <!-- ScrollViewの背景にある画像 --> 9 <ImageView 10 android:id="@+id/imageView" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:layout_marginEnd="8dp" 14 android:clickable="true" 15 android:focusable="true" 16 app:layout_constraintEnd_toEndOf="parent" 17 app:layout_constraintStart_toStartOf="parent" 18 app:layout_constraintTop_toTopOf="parent" 19 app:srcCompat="@mipmap/ic_launcher" /> 20 21 <ScrollView 22 android:id="@+id/scrollView" 23 android:layout_width="match_parent" 24 android:layout_height="match_parent" 25 app:layout_constraintBottom_toBottomOf="parent" 26 app:layout_constraintEnd_toEndOf="parent" 27 app:layout_constraintStart_toStartOf="parent" 28 app:layout_constraintTop_toTopOf="parent"> 29 30 <android.support.constraint.ConstraintLayout 31 android:layout_width="match_parent" 32 android:layout_height="wrap_content" 33 android:layout_marginTop="50dp"> <!-- トップにマージンを設定 --> 34 35 <!-- 何らかの内容 --> 36 <android.support.constraint.ConstraintLayout 37 android:layout_width="match_parent" 38 android:layout_height="1000dp" 39 android:background="@android:color/darker_gray" 40 app:layout_constraintBottom_toBottomOf="parent" 41 app:layout_constraintEnd_toEndOf="parent" 42 app:layout_constraintStart_toStartOf="parent" 43 app:layout_constraintTop_toTopOf="parent"> 44 45 </android.support.constraint.ConstraintLayout> 46 </android.support.constraint.ConstraintLayout> 47 48 </ScrollView> 49</android.support.constraint.ConstraintLayout>
- MainActivity.java
java
1public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 ImageView imageView = (ImageView) findViewById(R.id.imageView); 9 10 // 画像クリックでトースト表示 11 imageView.setOnClickListener(new View.OnClickListener() { 12 @Override 13 public void onClick(View view) { 14 Toast.makeText(MainActivity.this, "clicked!!", Toast.LENGTH_SHORT).show(); 15 } 16 }); 17 18 } 19}
- 画面
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。