RelativeLayoutの中にScrollViewを入れる方法

3,070 views
Skip to first unread message

Jack

unread,
Jul 19, 2010, 5:12:51 AM7/19/10
to 日本Androidの会
どなたかご存知でしたら教えて頂けないでしょうか。

今、RelativeLayoutの中にScrollViewを入れようとしていますが、うまくいきません。
実現したいことは、以下の通りです。

1.ヘッダーやボタンを画面上部に定義

2.1の下にEditTextが横に4つ並んでいる情報を9列縦に並べてこの9列をスクロール出来るようにする
  (画面に入りきらないため)

3.9列に下にボタンやメッセージを置く

ところが、上記2,3の位置が、belowのコントロールが効かず、画面上部に表示されます。
どのように定義すればいいのでしょうか。

現在の定義を簡単に記載します。
<RelativeLayout

<TextView
android:id="@+id/t1"

<Button
android:id="@+id/b1"
android:layout_below="@+id/t1"

<ScrollView
android:id="@+id/sv1"
android:layout_height="fill_parent"
android:layout_below="@+id/b1"
android:layout_weight="1"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/txt_h1"
これが横に4つ縦に9つあります

</RelativeLayout>
</ScrollView>
<Button
android:id="@+id/b2"


簡単に以上のような感じです。

どなたか教えて頂けないでしょうか。








Keiji Ariyama

unread,
Jul 19, 2010, 5:51:36 AM7/19/10
to android-g...@googlegroups.com, Jack
アリヤマ@大阪です。

 出先なので完全な回答にならず申し訳ないのですが、想定されているレイアウ
トは、

1.ヘッダの領域をLayoutで確保。
2.フッタの領域をLayoutで確保。
3.スクロールビューを、ヘッダの領域の下(below)、フッタの領域の上(above)
で高さをfill_parentにする。

 この手順で、実現できると思います。

 あと、below等のID指定は、+記号は要りません。

> android:layout_below="@+id/b1"

 は、

> android:layout_below="@id/b1"

 で、きちんと反映されるかと思います。

 コツは、ビューを細々置くより、まずはLayoutとして領域を確保することを意
識する事。一度、正確に配置すれば、後からLayoutを解体してするのは比較的簡
単に出来ますので。

 そして、スクロールビューより先にフッタの領域をおいて、ヘッダとフッタの
間にスクロールビューを置くと言う指定をすることです。

 宜しくお願いします。

/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル6F
@Web http://www.c-lis.co.jp
*********************************************/

Jack

unread,
Jul 19, 2010, 11:18:32 AM7/19/10
to 日本Androidの会
有山様

ご指導ありがとうございます。

だいぶ良くなっって、ヘッダー、スクロールビュー、フッターというLayoutは表示されたのですが、
フッタ-がScrollViewの下に表示されず画面上部に上書きされています。
フッターのBelowをScrollViewのIDにしたのですが有効でないようです。

これで指定間違いかなにか解りますでしょうか。
> @Webhttp://www.c-lis.co.jp
> > どなたか教えて頂けないでしょうか。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Keiji Ariyama

unread,
Jul 19, 2010, 12:10:02 PM7/19/10
to android-g...@googlegroups.com, Jack
有山@大阪です。

 レイアウトファイルを見てないので推測でしか言えませんが、、、

 フッターの配置で、android:layout_alignParentBottomの指定をしていますか?
 前のメールで述べた通り、ヘッダとフッタを先に配置するのがコツです。

 ヘッダは、parentTopにあり、
 フッタは、parentBottomにあり、
 スクロールビューは、ヘッダの下・フッタの上にある

 と、いう関係です。

 フッターは、スクロールビューの下にあるのではなくて、画面(parent)の下に
位置するのです。

/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル6F
@Web http://www.c-lis.co.jp
*********************************************/

Jack

unread,
Jul 20, 2010, 10:13:39 AM7/20/10
to 日本Androidの会
有山様

だいぶ形になってきました。

1.ヘッダーとフッターを先に定義。
2.フッターとScrollViewのBelowにヘッダーを定義
3.フッタのボタンとメッセージにandroid:layout_alignParentBottomの指定

これで何とか形になってきました。

今下記のような状態が残っています。

1.スクロールバーは、ヘッダーの下から出ていますが、フッターの部分までスクロールバーが来て、スクロールビュー内のEditTextがフッターボタ
ンの後ろまで表示されている
2.フッター内には、ボタンとその下にメッセージを置いたのですが、メッセージが見えなくボタンのみ残っているという状況です。
スクロールはうまくいっています。

ヘッダーとフッターの間だけでスクロールする仕様を考えていたので、もう少しご指導頂けないでしょうか。
宜しくお願いします。


On 7月20日, 午前1:10, Keiji Ariyama <keiji_ariy...@c-lis.co.jp> wrote:
> 有山@大阪です。
>
>  レイアウトファイルを見てないので推測でしか言えませんが、、、
>
>  フッターの配置で、android:layout_alignParentBottomの指定をしていますか?
>  前のメールで述べた通り、ヘッダとフッタを先に配置するのがコツです。
>
>  ヘッダは、parentTopにあり、
>  フッタは、parentBottomにあり、
>  スクロールビューは、ヘッダの下・フッタの上にある
>
>  と、いう関係です。
>
>  フッターは、スクロールビューの下にあるのではなくて、画面(parent)の下に
> 位置するのです。
>
> /*********************************************
> 有限会社シーリス
> 代表 有山 圭二
> @Address
> 〒530-0044
> 大阪市北区東天満二丁目2番5号
> 第2新興ビル6F
> @Webhttp://www.c-lis.co.jp
> >> - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Jack

unread,
Jul 20, 2010, 10:24:23 AM7/20/10
to 日本Androidの会
有山様

下記のような定義状態です。テキストの関係で一部のみ書かせて頂きます。
<RelativeLayout

<TextView
android:id="@+id/t1"

<Button
android:id="@+id/b1"
android:layout_below="@+id/t1"

<ScrollView
android:id="@+id/sv1"
android:layout_height="fill_parent"
android:layout_below="@+id/b1"
android:layout_weight="1"

<RelativeLayout
android:layout_height="fill_parent"

<EditText
android:id="@+id/txt_h1"
これが横に4つ縦に9つあります

</RelativeLayout>
</ScrollView>

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
<Button
android:id="@+id/b2"
android:layout_below="@+id/b1"
android:layout_alignParentBottom="true"

<EditText
android:layout_below="@+id/b2"
android:layout_alignParentBottom="true"

</RelativeLayout>
</RelativeLayout>

以上です。これでイメージ解りますでしょうか。
Reply all
Reply to author
Forward
0 new messages