2017-05-01 5 views
4

Android Studio 미리보기 화면에서 Android Activity (ConstraintLayout)의 ImageView로 일부 이미지를 추가하려고하면 이미지가 올바르게 표시되지만 실제로 앱을 실행할 때 장치 또는 에뮬레이터에서 이미지를 표시하지 않습니다.앱 실행시 이미지 레이아웃에 이미지가 표시되지 않음

다음은,

<?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" 
    tools:context="com.vchamps.android.staffast.ProfessionalsCalc" 
    android:background="@color/colorPrimary"> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guidelineVertical1" 
     app:layout_constraintGuide_percent="0.1" 
     android:orientation="vertical" 
     tools:layout_editor_absoluteY="0dp" 
     tools:layout_editor_absoluteX="39dp" /> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guidelineVertical2" 
     app:layout_constraintGuide_percent="0.25" 
     android:orientation="vertical" 
     tools:layout_editor_absoluteY="0dp" 
     tools:layout_editor_absoluteX="96dp" /> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guidelineHorizontal" 
     app:layout_constraintGuide_begin="87dp" 
     android:orientation="horizontal" 
     tools:layout_editor_absoluteY="87dp" 
     tools:layout_editor_absoluteX="0dp" /> 

    <ImageView 
     android:visibility="visible" 
     android:id="@+id/imgRate" 
     android:layout_width="@dimen/rates_icon_size" 
     android:layout_height="@dimen/rates_icon_size" 
     app:srcCompat="@drawable/icon_rates" 
     android:scaleType="fitCenter" 
     android:adjustViewBounds="true" 
     app:layout_constraintTop_toTopOf="@+id/guidelineHorizontal" 
     android:layout_marginTop="27dp" 
     android:layout_marginLeft="0dp" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical1" 
     /> 
    <ImageView 
     android:visibility="visible" 
     android:id="@+id/imgSchedule" 
     android:layout_width="@dimen/rates_icon_size" 
     android:layout_height="@dimen/rates_icon_size" 
     app:srcCompat="@drawable/icon_schedule" 
     android:layout_marginTop="10dp" 
     app:layout_constraintTop_toBottomOf="@+id/imgRate" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical1" 
     android:scaleType="fitCenter" 
     /> 

    <ImageView 
     android:visibility="visible" 
     android:id="@+id/imgPayout" 
     android:layout_width="36dp" 
     android:layout_height="36dp" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical1" 
     app:srcCompat="@drawable/icon_payout" 
     android:layout_marginTop="8dp" 
     app:layout_constraintTop_toBottomOf="@+id/imgSchedule" 
     android:scaleType="fitCenter" 
     /> 

    <TextView 
     android:id="@+id/tvRate" 
     style="@style/fontRateScreenTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="33dp" 
     android:text="Industry Leading Rates" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical2" 
     app:layout_constraintTop_toTopOf="@+id/guidelineHorizontal" /> 

    <TextView 
     android:id="@+id/tvSchedule" 
     style="@style/fontRateScreenTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="44dp" 
     android:text="Flexible Schedule" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical2" 
     app:layout_constraintTop_toTopOf="@+id/tvRate" /> 

    <TextView 
     android:id="@+id/tvPayout" 
     style="@style/fontRateScreenTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="48dp" 
     android:text="Quick and Easy Payout" 
     app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical2" 
     app:layout_constraintTop_toTopOf="@+id/tvSchedule" /> 

    <Button 
     android:id="@+id/btnWork" 
     style="@style/ButtonStyle" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:text="CLICK ME" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginStart="8dp" 
     android:layout_marginEnd="8dp" /> 


</android.support.constraint.ConstraintLayout> 

안드로이드 Studio의 UI 미리보기 다음과 같습니다,

UI Preview

우리는 3 개 이미지가 여기에 표시지고 있음을 알 수 내가 사용하고있는 코드입니다

하지만 에뮬레이터 또는 실제 장치에서 응용 프로그램을 실행하면 3 개의 이미지가 표시되지 않습니다. 36dp

  • 세 가지 이미지 크기,
    1. icon_rates : 87x59 픽셀
    2. icon_schedule : 88x78 픽셀 아래는 에뮬레이터의 스크린 샷,

      • @ DIMEN/rates_icon_size의 가치

        Emulator View입니다

      • 픽셀 _payout : 60x82 픽셀
  • 감사의 말씀을 전하여 감사드립니다.

    +0

    동일한 문제가 발생했습니다. 자바 클래스에서'setContentView (R.layout.your_layout)'전에'super.onCreate (savedInstanceState)'를 호출했는지 확인하십시오.나는이 방법으로 그것을 해결했다. –

    +0

    예, 이미 같은 방식으로 전화했습니다. – vChamps

    답변

    3

    이미지 뷰에서 대신 srcCompact 사용 SRC

    <ImageView 
        android:visibility="visible" 
        android:id="@+id/imgRate" 
        android:layout_width="@dimen/rates_icon_size" 
        android:layout_height="@dimen/rates_icon_size" 
        app:src="@drawable/icon_rates" 
        android:scaleType="fitCenter" 
        android:adjustViewBounds="true" 
        app:layout_constraintTop_toTopOf="@+id/guidelineHorizontal" 
        android:layout_marginTop="27dp" 
        android:layout_marginLeft="0dp" 
        app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical1" 
        /> 
    

    대신

    <ImageView 
        android:visibility="visible" 
        android:id="@+id/imgRate" 
        android:layout_width="@dimen/rates_icon_size" 
        android:layout_height="@dimen/rates_icon_size" 
        app:srcCompat="@drawable/icon_rates" 
        android:scaleType="fitCenter" 
        android:adjustViewBounds="true" 
        app:layout_constraintTop_toTopOf="@+id/guidelineHorizontal" 
        android:layout_marginTop="27dp" 
        android:layout_marginLeft="0dp" 
        app:layout_constraintLeft_toLeftOf="@+id/guidelineVertical1" 
        /> 
    
    +0

    하지만 왜?! 드래그 앤 drop 실제로 app으로 만들었습니다. srcCompat :(벡터 드로어 블을 사용할 때 app : srcCompat를 사용해야합니다. – Ewoks

    +0

    Bro! 감사합니다. 대단히 감사합니다.이 한 가지 문제로 인해 개최되었습니다. 이유는 무엇입니까? –

    +0

    @ Chris-Jr 저는 ImageView 대신에'AppCompatImageView'에서'srcCompat'를 사용할 수 있다고 생각합니다. 이유에 대해서는 확실하지 않습니다. – Anmol

    0

    의를 사용하여 나는 당신의 이미지가 문제를 생각합니다. 최소한 우아한 솔루션은 아닙니다. 앱이 다른 장치에서 실행해야하는 경우

    당신은 안드로이드 벡터 드로어 블 Drawable 대신 정상 PNG 이미지를 사용합니다. 비트 맵 대신 벡터 드로어 블을 사용하면 이미지 품질 손실없이 동일한 파일을 다른 화면 밀도에 맞게 크기를 조정할 수 있으므로 APK 크기가 줄어 듭니다.

    이미지를 사용하려면 SVG 형식 (예 : 잉크 스케이프는 무료)으로 변환 한 다음 this 무료 온라인 도구로 Vector Drawable 형식으로 변환해야합니다.

    두 번째 해결 방법은 Material Design Icons입니다. 그들은 훌륭한 사용자 경험을 보장하기 위해 많은 설계자와 함께 개발되었으며 벡터 드로어 블 형식으로도 제공됩니다.

    벡터 drawable로 코드를 시도했는데 문제없이 이미지가 표시됩니다.