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

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

ただいまの
回答率

90.48%

  • Android

    7402questions

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

  • Android Studio

    4359questions

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

Android Studioでアニメのセル画のように、backgroundに背景の画像(background.jpg)と人物の画像(character.jpg)を表示したい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 720
退会済みユーザー

退会済みユーザー

いつもお世話になります。
Android Studio, Mac OS X, Android5.1の組み合わせで開発をしています。 
アニメのセル画のように、backgroundに背景の画像(background.jpg)と周囲を透明化した人物の画像(character.png)を表示し、そのうえにEditTextを載せたいと思っています。
下記のソースで、いちおう目的は達成できたのですが、いくつか挙動不明なところがあり、ご相談します。

(1)アニメのセル画のように、backgroundに背景の画像(background.jpg)と人物の画像(character.jpg)を表示するのには、背景に2枚の画像を登録したいが、現在は背景に1枚、上部に1枚、下部にEditTextとなっている。background/character/EditTextを重ねて表示することはできますか? その方法を教えてください。

(2)現状でEditTextをタップすると、characterのimageviewとEditTextが上にずれてキーボードが現れます。keyboardを表示するとき、charcterは移動しない。EditTextのTopは移動せず高さをkeyboard分減らす、というようにしたいです。
方法をご教示ください。

よろしくおねがいします。

ソースの全文は下記の通りです。 

activity_main.xml 
< ?xml version="1.0" encoding="utf-8"?> 
< RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/background" 
     tools:context=".MainActivity"> 
    <ImageView 
         android:layout_marginTop="0dp" 
         android:layout_marginLeft="0dp" 
         android:id="@+id/character" 
         android:src="@drawable/character" 
         /> 
    <EditText 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="120dp" 
         android:layout_marginLeft="5dp" 
         android:id="@+id/editText"
         android:text=""/> 
</RelativeLayout>

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

1について
ImageViewのbackground属性とsrc属性を使い分けてみてはどうでしょう。
2について
ソフトウェアキーボードはActivityのルートビューに追加されます。その時に、初期設定では既存のビューと表示領域を分け合う設定になっています。
そのためAndroidManifest.xmlのActivityタグの属性に下記を追加することで解決できます。

android:windowSoftInputMode="adjustPan"

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/15 17:58

    ご回答ありがとうございます。
    確認です。1はRayoutのbackgroundではなくImageViewのBackgroundを使うということでしょうか?

    キャンセル

  • 2016/02/15 18:18

    質問を読み返すと微妙でした。
    素直に背景一枚につきImageViewを一つ使ったほうがいいですね。
    RelativeLayout→全体Viewの親
    ImageView→src属性に背景をセット
    ImageView→src属性にキャラクターをセット
    EditText→画面下に配置

    むしろ「background/character/EditTextを重ねて表示する」は現状できていないですか?

    キャンセル

  • 2016/02/16 09:21

    ありがとうございます。
    現状では、質問のソースのとおりで、

    全面に敷いたbackground(RelativeLayoutのbackground)の上にcharacter(画面上部)/EditText(画面下部)を載せることはできています。
    しかしながら、
    ・keyboardを出すとcharacterが画面から追い出されて消える(characterの位置はかえたくない)
    ・EditTextの背景が白(不透明)でRelativeLayoutのbackgrondを透かして見れない。
    という状況で、依然苦戦しております。
    今日また試してみます。

    キャンセル

  • 2016/02/16 10:15

    なるほど、EditTextのbackground属性に@nullを指定するといいでしょう。
    ただ、今後の事を考えると、背景をImageViewにしておくことをお勧めします。

    キャンセル

  • 2016/02/16 13:08

    なるほど。
    こんな感じでしょうか。
    いま試せる環境がないのですが、これではbackgroundを表示したImageViewに重ねられていないような気がします。
    アドバイスいただければ幸い。


    < ?xml version="1.0" encoding="utf-8"?>
    < RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android&quot;
    xmlns:tools="http://schemas.android.com/tools&quot;
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity">
    <ImageView
    android:layout_marginTop="0dp"
    android:layout_marginLeft="0dp"
    android:layout_marginBottom="0dp"
    android:layout_marginRight="0dp"
    android:id="@+id/character"
    android:src="@drawable/background"
    />
    <ImageView
    android:layout_marginTop="0dp"
    android:layout_marginLeft="0dp"
    android:id="@+id/character"
    android:src="@drawable/character"
    />
    <EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="120dp"
    android:layout_marginLeft="5dp"
    android:id="@+id/editText"
    android:background="@null"
    android:text=""/>
    </RelativeLayout>

    キャンセル

  • 2016/02/16 14:11

    RelativeLayoutを使っていて、なぜ重ねられないと思うのですか?

    キャンセル

  • 2016/02/16 17:55

    Androidの開発がほぼ初めてで、微妙に2.3のころに作った知識で自動で並べて配置していた記憶が残っているためです。
    要するにわかってない、ってことです。
    ひとつひとつ試してますので、よろしくご容赦いただければと。

    WPFならcanvas(objectを重ねられる)に相当するものとgrid(重ねられず自動で並ぶ)に相当するものがAndroidではなになのか、わかってないわけです。

    キャンセル

  • 2016/02/16 18:12

    ・LinearLayout→子Viewを並べて表示する。基本的にはView同士は重ならない。
    ・RelativeLayout→全てのView(親Viewとその内部の子View)がそれぞれの位置関係を相対的に指定して表示する。View同士は重なる場合は後から追加したViewが上に来る。

    キャンセル

  • 2016/02/17 11:18

    なるほど。
    補足していただきありがとうございます。

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Android

    7402questions

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

  • Android Studio

    4359questions

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

  • トップ
  • Androidに関する質問
  • Android Studioでアニメのセル画のように、backgroundに背景の画像(background.jpg)と人物の画像(character.jpg)を表示したい。