2

Es ist wirklich komisch das Problem, vor dem ich stehe. Aber ich muss um Hilfe bitten. Ich versuche ein Bild anzuzeigen, wenn keine Datensätze verfügbar sind. Aber das Bild wird nicht sichtbar.ImageView Kein Bild, wenn keine Datensätze vorhanden sind

Hier ist Fluss.

Ich habe content_main.xml in denen ich eine Recycling-Ansicht, eine relativeLayout für die Erlaubnis und eine ImageView für Image haben.

Wenn die Berechtigung nicht erteilt wird, möchte ich das Berechtigungslayout (Working) anzeigen.
Wenn Erlaubnis gewährt wird, dann erhalte ich Datensatz von der Datenbank und Einstellung zum Adapter aber wenn recordList Größe 0 ist, dann muss ich Bild anzeigen (nicht arbeiten).
Stattdessen kann ich nur fab Taste und weißen Hintergrund sehen.

Hier ist meine content_main.xml (I Navigationsleiste bin mit so ist content_main.xml in app_bar_main.xml enthalten)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:id="@+id/content_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.sandy.callrecorder.MainActivity" 
tools:showIn="@layout/app_bar_main"> 
<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:src="@drawable/no_records" 
    android:visibility="gone" 
    android:id="@+id/backgroundImage"/> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/record_recycle_list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"  
    android:scrollbars="none" 
    android:visibility="gone" /> 

<RelativeLayout 
    android:id="@+id/permissionLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingEnd="36dip" 
    android:paddingLeft="36dip" 
    android:paddingRight="36dip" 
    android:paddingStart="36dip" 
    > 

    <Button 
     android:id="@+id/btnAllowPermission" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="@string/allow_permissions" /> 
</RelativeLayout> 

Hier ist meine MainActivity.java

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

    findViewById(); 
    managePermissions(); 
} 

private void findViewById() { 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    backgroundImage = (ImageView) findViewById(R.id.backgroundImage); 
    permissionLayout = (RelativeLayout) findViewById(R.id.permissionLayout); 
    mBtnAllowPermission = (Button)findViewById(R.id.btnAllowPermission); 

    recyclerView = (RecyclerView) findViewById(R.id.record_recycle_list); 
    mRelativeLayout = (RelativeLayout) findViewById(R.id.content_main); 
    fab = (FloatingActionButton) findViewById(R.id.fab); 

    mBtnAllowPermission.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ActivityCompat.requestPermissions(MainActivity.this, permission, MY_PERMISSIONS_REQUES); 
     } 
    }); 


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

private void managePermissions() { 

    if (!hasPermissions(permission)) { 
     permissionLayout.setVisibility(View.VISIBLE); 
     backgroundImage.setVisibility(View.GONE); 
    } else { 
     initializeRecycleView(); 
     startService(); 
    } 

} 

private void initializeRecycleView() { 

    recyclerView.setHasFixedSize(true); 

    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(mLayoutManager); 
    DBHelper mDBHelper = new DBHelper(this); 
    mDBHelper.open(); 

    ArrayList<CallRecord> listOfRecord = mDBHelper.getRecordList(); 
    mDBHelper.close(); 

    listOfRecords = new ArrayList<>(); 
    for (CallRecord objCallRecord : listOfRecord) { 
     if (objCallRecord.getIsArchive() == 0) { 
      listOfRecords.add(objCallRecord); 
     } 
    } 
    setListToRecycle(listOfRecords); 
} 

private void setListToRecycle(ArrayList<CallRecord> listOfRecords) { 
    // define an adapter 
    if (listOfRecords.size() <= 0) { 
     fab.setVisibility(View.VISIBLE); 
     permissionLayout.setVisibility(View.GONE); 
     backgroundImage.setVisibility(View.VISIBLE); 
     recyclerView.setVisibility(View.GONE); 
    } else { 
     fab.setVisibility(View.GONE); 
     recyclerView.setVisibility(View.VISIBLE); 
     backgroundImage.setVisibility(View.GONE); 
     permissionLayout.setVisibility(View.GONE); 
     mAdapter = new RecordListAdapter(listOfRecords, this); 
     recyclerView.setAdapter(mAdapter); 
    } 

} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUES: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       if (!isMyServiceRunning(TService.class)) { 
        Intent intent = new Intent(MainActivity.this, TService.class); 
        startService(intent); 
       } 

       initializeRecycleView(); 

      } else { 

       if (isMyServiceRunning(TService.class)) { 
        Intent intent = new Intent(MainActivity.this, TService.class); 
        stopService(intent); 
       } 
      } 

     } 
    } 
} 
} 

Ich kämpfe mit diesem Problem aus den letzten 24 Stunden, aber keine Hilfe. Bitte gib mir einen Hinweis.

+3

Versuchen Sie die Einstellung Android: background = "@ Android: Farbe/schwarz" auf Ihrem ImageView um herauszufinden, ob die Ansicht korrekt angezeigt wird. Wenn das der Fall ist, ist das Problem mit Ihrem Bild. – k0bin

+0

Versuchen Sie, imageview ein weiteres Zeichenobjekt (ein größeres Bild) hinzuzufügen, um zu prüfen, ob es sichtbar ist oder nicht. – MinnuKaAnae

+1

Ja Bildansicht wird korrekt mit schwarzer Farbe, aber nicht Bild angezeigt. Was könnte ein Problem mit Bildern sein? –

Antwort

1

Überprüfen Sie, ob Sie Ihre Bilder in einem Ordner abgelegt haben, der der Bildschirmgröße entspricht, mit der Sie testen. Ähnliche Ausgabe hier: Android Drawable Image not Showing

Verwandte Themen