Search code examples
javaandroidandroid-studioandroid-linearlayout

Linear Layout grid showing in emulator but not on device, what could be cause?


I am currently running an activity that works fine on an emulator (Nexus 5X API 27), however when executing it on a device (Samsung S8 Plus); the linear layout grid does not appear. I've added the proper constraints but they still don't show.

Tried shifting the textviews to make more space for the Linear Layout grid but still no use.

A screenshot of how the activity should look like: https://i.sstatic.net/y9TWS.jpg

Here is the Activity Code:

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;

public class Badges extends AppCompatActivity {
    private static String TAG = "Badges.Class";
    private static ImageView badge1,badge2, badge3, badge4, badge5, badge6, badge7, badge8, badge9, questionBadge;
    private Button summaryButton;
    public static int b1, b2, b3, b4, b5, b6, b7, b8, b9;
    public static String currentUser;
    public static int badgePoints;
    public static TextView textPointsValue;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_badges);

        //Creating Badge Icons and greying them out
        badge1 = findViewById(R.id.imageBadge1);
        badge2 = findViewById(R.id.imageBadge2);
        badge3 = findViewById(R.id.imageBadge3);
        badge4 = findViewById(R.id.imageBadge4);
        badge5 = findViewById(R.id.imageBadge5);
        badge6 = findViewById(R.id.imageBadge6);
        badge7 = findViewById(R.id.imageBadge7);
        badge8 = findViewById(R.id.imageBadge8);
        badge9 = findViewById(R.id.imageBadge9);

        badge1.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge2.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge3.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge4.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge5.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge6.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge7.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge8.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
        badge9.setColorFilter(this.getResources().getColor(R.color.transparentDarken));


        //Creating Summary Button
        summaryButton = findViewById(R.id.summaryButtonBadge);
        summaryButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(Badges.this,BadgesSummary.class);
                startActivity(myIntent);
            }
        });

        //Create Back Button
        ImageView backButton = findViewById(R.id.badgeBackButton);
        backButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(Badges.this,Home.class);
                startActivity(myIntent);

            }
        });

        //Question Mark Button
        //Have yet to set up logic for this
        questionBadge = findViewById(R.id.questionButBadge);
        questionBadge.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //******Add Logic in here*****
            }
        });

        //Points text
        textPointsValue = findViewById(R.id.textPointsValue);

        Log.d(TAG, "onCreate: the value of current user is " + currentUser);



        //Staged Scenarios
        if(currentUser.equals("test")){
            //badge1.setColorFilter(this.getResources().getColor(R.color.transparentDarken));
            Log.d(TAG, "onCreate: Ran the currentUser test method, and the value of current " +
                    "user " + currentUser);

            badgePoints = 0;
            badge1.setColorFilter(null);
            addPoints(50);
            b1=1;
            badge2.setColorFilter(null);
            addPoints(200);
            b2=1;
            badge3.setColorFilter(null);
            addPoints(300);
            b3=1;
            badge4.setColorFilter(null);
            addPoints(50);
            b4=1;

        }

        else if(currentUser == "gg"){

        }

        else if(currentUser == "jason"){

        }
        //Scenario one

    }


    //Public method to reset the values
    public static void resetBadge (){
        //This resets all badges.
        //Should only be ran when a new user is created.
        b1 = 0;
        b2 = 0;
        b3 = 0;
        b4 = 0;
        b5 = 0;
        b6 = 0;
        b7 = 0;
        b8 = 0;
        b9 = 0;

        badgePoints=0;
        textPointsValue.setText(String.valueOf(badgePoints));

        Log.d(TAG, "resetBadge: Badges have been reset due to new user login");

    }

    public static void setCurrentUser(String user){
        Badges.currentUser = user;
        Log.d(TAG, "setCurrentUser: User has been updated " + user);
    }

    public static void addPoints(int value){
        badgePoints = badgePoints  + value;
        textPointsValue.setText(String.valueOf(badgePoints));
    }

    public static void achieveBadge1(){
        //Create Avatar and profile
        if(b1 == 0){
            badge1.setColorFilter(null);
            addPoints(50);
            b1=1;
        }
    }

    public static void achieveBadge2(){
        //Choose major
        if(b2 == 0){
            badge2.setColorFilter(null);
            addPoints(200);
            b2=1;
        }
    }

    public static void achieveBadge3(){
        //Finish Degree
        if(b3 == 0){
            badge3.setColorFilter(null);
            addPoints(300);
            b3=1;
        }
    }

    public static void achieveBadge4(){
        //Redeem a Reward
        if(b4 == 0){
            badge4.setColorFilter(null);
            addPoints(50);
            b4=1;
        }
    }

    public static void achieveBadge5(){
        //Log in 7 days
        if(b5 == 0){
            badge5.setColorFilter(null);
            addPoints(100);
            b5=1;
        }
    }

    public static void achieveBadge6(){
        //Earn 500 points
        if(b6 == 0){
            badge6.setColorFilter(null);
            addPoints(100);
            b6=1;
        }
    }

    public static void achieveBadge7(){
        //Reviewed a Course
        if(b7 == 0){
            badge7.setColorFilter(null);
            addPoints(200);
            b7=1;
        }
    }

    public static void achieveBadge8(){
        //Saved a course
        if(b8 == 0){
            badge8.setColorFilter(null);
            addPoints(50);
            b1=1;
        }
    }

    public static void achieveBadge9(){
        //Update a wam
        if(b9 == 0){
            badge9.setColorFilter(null);
            addPoints(100);
            b9=1;
        }
    }
}


Here is the XML Code:

<?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=".Badges">

    <ImageView
        android:id="@+id/badgeBackButton"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_marginStart="3dp"
        android:layout_marginTop="29dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/back_arrow" />

    <ImageView
        android:id="@+id/questionButBadge"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_marginTop="40dp"
        android:layout_marginEnd="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/question" />

    <TextView
        android:id="@+id/textPointsBadge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="176dp"
        android:layout_marginEnd="176dp"
        android:text="Points"
        android:textColor="@color/colorLightPurple"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textPointsValue" />

    <TextView
        android:id="@+id/textPointsValue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="176dp"
        android:layout_marginEnd="177dp"
        android:text="650"
        android:textColor="@color/colorLightPurple"
        android:textSize="35sp"
        app:layout_constraintBottom_toTopOf="@+id/textPointsBadge"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView13" />

    <TextView
        android:id="@+id/badgesText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="139dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="139dp"
        android:gravity="center"
        android:text="Badges"
        android:textAlignment="center"
        android:textColor="@color/colorLightPurple"
        android:textSize="40dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/summaryButtonBadge"
        android:layout_width="161dp"
        android:layout_height="48dp"
        android:layout_marginStart="69dp"
        android:layout_marginEnd="69dp"
        android:layout_marginBottom="20dp"
        android:background="@drawable/purple_square_button"
        android:text="See Summary"
        android:textAllCaps="false"
        android:textColor="@color/colorWhite"
        android:textSize="17dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <LinearLayout
        android:id="@+id/linIconGrid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="10dp"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textPointsBadge">

        <LinearLayout
            android:id="@+id/linTopRow"
            android:layout_width="match_parent"
            android:layout_height="114dp"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/imageBadge1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge1" />

            <ImageView
                android:id="@+id/imageBadge2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge2" />

            <ImageView
                android:id="@+id/imageBadge3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge3" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/linMidRow"
            android:layout_width="match_parent"
            android:layout_height="114dp"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/imageBadge4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge4" />

            <ImageView
                android:id="@+id/imageBadge5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge5" />

            <ImageView
                android:id="@+id/imageBadge6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge6" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/linBotRow"
            android:layout_width="match_parent"
            android:layout_height="114dp"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/imageBadge7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge7" />

            <ImageView
                android:id="@+id/imageBadge8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge8" />

            <ImageView
                android:id="@+id/imageBadge9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dp"
                app:srcCompat="@drawable/badge9" />

        </LinearLayout>
    </LinearLayout>

    <ImageView
        android:id="@+id/imageView13"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginStart="178dp"
        android:layout_marginEnd="178dp"
        android:textAlignment="center"
        app:layout_constraintBottom_toTopOf="@+id/textPointsValue"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/badgesText"
        app:layout_constraintVertical_bias="0.0"
        app:srcCompat="@drawable/onboarding2_logo2" />

</android.support.constraint.ConstraintLayout>

Solution

  • I found that images being used were too large (in terms of capacity e.g. 7mb each). I made the images smaller in size and everything began working fine.