When I click on any menu item present in the navigation drawer, the content of the menu item appears below the cards. The cards should disappear and then in their place the content of the menu items should be displayed. The contents of the menu items are written in the form of fragments. Could someone help me out in solving it? Attaching the code below...
Here is the MainActivity Java file
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close);
drawerLayout.setDrawerListener(actionBarDrawerToggle);
////////////////////////////////////////////////////////////////////
navigationView = (NavigationView)findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId())
{
case R.id.menu_profile:
fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new ProfileFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Profile");
menuItem.setChecked(true);
drawerLayout.closeDrawers();
break;
case R.id.menu_language:
fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new LanguageFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Set Language");
menuItem.setChecked(true);
drawerLayout.closeDrawers();
break;
case R.id.menu_tutorial:
fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new TutorialFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Tutorial");
menuItem.setChecked(true);
drawerLayout.closeDrawers();
break;
}
return true;
}
});
}
Here is the XML file
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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=".MainActivity"
android:id="@+id/drawer_layout"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main_container">
<include
android:layout_height="wrap_content"
android:layout_width="match_parent"
layout="@layout/toolbar_layout"
/>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_fixed"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
card_view:cardCornerRadius="10dp"
card_view:cardBackgroundColor="@android:color/background_light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/card_fixed_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="Sensor Details"
android:fontFamily="serif"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="#000"/>
<TextView
android:id="@+id/card_fixed_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:padding="5dp"
android:text="pH Level - \nTemperature - \nMoisture -"
android:fontFamily="serif"
android:textSize="16sp"
android:textColor="#000"/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_notification"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
card_view:cardCornerRadius="10dp"
card_view:cardBackgroundColor="@android:color/background_light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/card_notification_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Water The Plants!"
android:fontFamily="serif"
android:textSize="24sp"
android:layout_gravity="center"
android:textStyle="bold"
android:textColor="#000"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Done"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textStyle="bold"
android:fontFamily="serif"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_prediction"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
card_view:cardCornerRadius="10dp"
card_view:cardBackgroundColor="@android:color/background_light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/card_market_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Market Prediction"
android:fontFamily="serif"
android:textSize="24sp"
android:layout_gravity="center"
android:textStyle="bold"
android:textColor="#000"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Here!"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textStyle="bold"
android:fontFamily="serif"
android:layout_gravity="center_horizontal"
android:onClick="marketPrediction"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_pest"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
card_view:cardCornerRadius="10dp"
card_view:cardBackgroundColor="@android:color/background_light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/card_pest_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pest Details"
android:fontFamily="serif"
android:textSize="24sp"
android:layout_gravity="center"
android:textStyle="bold"
android:textColor="#000"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Here!"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textStyle="bold"
android:fontFamily="serif"
android:layout_gravity="center_horizontal"
android:onClick="pestDetails"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/navigation_view"
android:layout_gravity="start"
app:menu="@menu/drawer_menu"
app:headerLayout="@layout/navigation_drawer_header"
>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
You need to fetch ID of the CardView
and store it in a variable.
CardView cardView = findViewById(R.id.card_fixed);
After doing that, you need to setVisibility
to GONE
to hide the CardView
's wherever you want to.
cardView.setVisibility(View.GONE);
setVisibility
to your View
, there are three options,View.VISIBLE
, View.INVISIBLE
, View.GONE
.
You can setVisibility(View.VISIBLE)
to make the CardView
's or any other Views
appear back.
View.INVISIBLE
takes up space for layout purposes, but View.GONE
won't take any space.
(For some reason I'm unable to format the code to make CardView
visibility to GONE
.)