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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

4274閲覧

ScrollViewの連動について

fla

総合スコア14

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/01/18 10:20

###前提・実現したいこと

123
456
789

3×3の表があるとして、1はスクロールしない。2,3は横スクロールのみ。4,7は縦スクロールのみ。5,6,8,9は縦横スクロールし、2,3の横スクロールと5,6,8,9,の横スクロール、4,7の縦スクロールと5,6,8,9の縦スクロールを連動させたいです。

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

xmlでScrollView,HorizontalScrollViewを使い実現したいようにうまく囲むことができないのですが、Javaコードの方で実装する必要があるのでしょうか?またその場合どのような方法で実装することができるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

・レイアウトはRelativeLayoutを使用するとできると思いますよ。
・ScrollViewとHorizontalScrollViewを継承する。
・onScrollChangedをオーバーライドする。
・スクロール量をコールバックするインターフェースを定義する。
・各ScrollViewからのスクロール量のコールバックを元に5689をスクロールする。

投稿2017/01/18 10:30

yona

総合スコア18155

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

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

fla

2017/01/18 10:37

RelativeLayoutを使えばxmlのレイアウトのみでできるということですか?
yona

2017/01/18 10:40

上手く使うとできます。
fla

2017/01/18 11:20

上手くとはどのように実現すればよいのでしょうか? ScrollView、HorizontalScrollViewの中身を一つの子要素にして 同じScrollViewの中に4,5,6,7,8,9をいれ、HorizontalScrollViewの中に2,3,5,6,8,9を入れる方法が思いつかないのですが、、、
yona

2017/01/18 11:54

5,6,8,9をScrollViewに入れることは諦めてください。 ・2,3をHorizontalScrollViewを継承したクラスの子要素にする。 ・4,7をScrollViewを継承したクラスの子要素にする。 ・5,6,8,9はFrameLayoutの子要素にする。
fla

2017/01/18 14:12 編集

その方法で2、3が横スクロール、4、7が縦スクロールすることはわかるのですがFrameLayoutに含まれる要素が連動してスクロールしないと思うのですが、、 下記のようなレイアウトを書いてみたのですがどうでしょうか? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="7" /> </LinearLayout> </ScrollView> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <HorizontalScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" /> </LinearLayout> </HorizontalScrollView> <FrameLayout android:layout_width="wrap_content" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="8" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="9" /> </LinearLayout> </LinearLayout> </FrameLayout> </LinearLayout> </LinearLayout>
yona

2017/01/18 15:00

わたしの回答を丸無視しているのにどうですかと言われても困ります。
fla

2017/01/20 02:08

これでRelativeLayoutでなければいけない理由がわからずそこは分かりやすいようにLinearLayoutにしたのですが、そこ以外は教えていただいたようにしたつもりです。FrameLayoutを使えばできるという仕組みが全く理解できないのですがそこの仕組みを詳しく教えていただけたら嬉しいです。
yona

2017/01/20 03:01

RelativeLayoutを使うと一階層でレイアウトが作れるので教えやすいというだけです。 また、現状のレイアウトでとりあえず表示はできていますか? 方針としては ・ScrollViewを継承したクラスを作成する。 ・継承したクラスでスクロール変化をコールバックできるようにする。 ・取得したスクロール量をFrameLayout#scrollByに渡してFrameLayoutをスクロールする。 全部を一度に教えると混乱するだけです。順番に教えるのでまずはレイアウトから作りましょう。
fla

2017/01/20 03:24

なるほど。勘違いしている部分がありました。 RelativeLayoutを使えばxmlのレイアウトのみでできるということだと思い、レイアウトだけでどうにか実装できる方法があるのかと思ってしまいました。 xmlのみでなくjavaファイルの方もいじっていく必要があるということですね。 とりあえず現状のレイアウトで5,6,8,9がスクロールしない以外は表示などは問題なくできています。
yona

2017/01/20 03:53

そんなに単純な実装ではないです。 次は私が回答に書いた2〜3を実装してください。
fla

2017/01/21 14:52

ありがとうございます。教えていただいた手順でやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問