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

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

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

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

Android Studio

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

Q&A

解決済

2回答

6610閲覧

android studio エミュレーターとxmlのプレビュー画面が異なる

mercurian-teto

総合スコア75

Java

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

Android Studio

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

1グッド

1クリップ

投稿2018/03/26 15:10

編集2018/03/27 13:22

タイトル通りなのですが、(起動してからしばらく時間が経過した)
エミュレーターと(layoutにある)xmlのプレビューが
明らかレイアウトが違ってきます。

エラーも忠告もないので混乱しております。
android studio 3.0.1です。

プレビューでは画像とボタンが表示されるのですが、
エミュレーターではボタンしか表示されず、ボタンもButton1と勝手に定義されています。
イメージ説明
回答お願いします。

OmikujiActivity.java

package jp.wings.nikkeibp.omikuji; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import java.util.Random; public class OmikujiActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.omikuji);

omikuji.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView" android:layout_width="192dp" android:layout_height="400dp" android:contentDescription="@string/omikuji" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/omikuji" /> <Button android:id="@+id/btn_event" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="@string/button1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.501" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imageView" tools:text="おみくじを始める" /> </android.support.constraint.ConstraintLayout>

strings.xml

<resources> <string name="app_name">おみくじ</string> <string name="btn_event">占いを始めます</string> <string name="omikuji">Omikuji</string> <string name="button1">Button1</string> </resources>
Kawboy442👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/03/26 23:50

プレビューしているものと、実行しているものは同一ビルドですか?
退会済みユーザー

退会済みユーザー

2018/03/26 23:51

※ 特定条件下(不明)でモック内が更新されないときがある
mercurian-teto

2018/03/27 02:53

パソコンを再起動してからもう一度見比べましたが、同じでした。ちなみに実際に端末にインストールしたときはプレビューのほうが優先されますか。インストールしたときにプレビューのほうが適用されていれば、シミュレーターでバグっていても問題がないです。
mercurian-teto

2018/03/27 03:19

ボタンは@string/とあるところに/の後ろが違うIDでした。なのでボタンは表示されましたが、画像が一向に表示されません
mercurian-teto

2018/03/27 05:20

ConstraintLayoutがベースになっています
guest

回答2

0

ベストアンサー

Buttonのテキストは解決されたとのことなので、ImageViewの画像が表示されない件について回答します。

レイアウトxml内のImageViewタグで、

xml

1<ImageView 2 ...(省略) 3 app:srcCompat="@drawable/omikuji" />

という風に画像ファイルの指定をされていますが、この app:srcCompat という属性はサポートライブラリのappcompat-v7に含まれる、 AppCompatImageView というクラスで使用できる属性です。

本来、 AppCompatActivity 内ではImageViewはAppCompatImageViewに自動的に変換されるためその記述でもプレビューのように問題なく表示されるのですが、ご質問のソースではAppCompatActivityではなくActivityを使用されているので、これが問題の原因です。レイアウトプレビューではAppCompatActivityを使用しているという前提で表示を行っているものと思います。

修正するには、AppCompatActivityを使用するか、 android:src="..." で画像を指定するようにしてください。

投稿2018/03/27 12:26

kakajika

総合スコア3131

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

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

mercurian-teto

2018/04/09 16:14

返信が大変遅れてしまい申し訳ありません。 解説本にはActivityが記載されているので、 android:src="..."で指定するようにしました。 解決しました。ありがとうございました。
guest

0

Buttonのテキストの方は解決されたようですが、

tools:text="おみくじを始める"

のようにtools:textで指定した内容はレイアウトエディターの表示上のみ作用するもので、実行したときにはここで設定した文字列は反映されません。空っぽのTextViewやButtonなどを配置してプログラムで文字列を設定するような用途のときに、エディター上でコンポーネントが見えないと不便ですから、「仮表示」ができるということです。

ImageViewが表示されない方についてですが、もしかして下図のように画像ファイル名の後ろに(v24)がついた状態になっていませんか?

これはAPI 24以降適用のフォルダーに格納されていることを表していますので、プレビューするAPIレベルの設定が24未満だと、この画像はエディター上には表示されません。


あ、ImageViewの説明は逆じゃん。プレビューには表示されるけどエミュレーターには表示されない、という話でしたね。これは勘違いしました。

投稿2018/03/27 03:46

編集2018/03/27 04:20
keicha_hrs

総合スコア6766

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問