I want place TextView of bottom ListView in navigation drawer. Throws java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="0dp"
android:paddingBottom="4dp"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="240dp"
android:layout_height="match_parent"
android:id="@+id/left_drawer"
android:layout_gravity="start"
>
<ListView
android:id="@+id/left_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:dividerHeight="0.1dp"
android:background="#111"
android:divider="#FFF"
/>
<TextView
android:id="@+id/joke_text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:lineSpacingExtra="5sp"
android:text="AAAAAA"
/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
// Getting reference to the DrawerLayout
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLinear = (LinearLayout) findViewById(R.id.left_drawer);
leftMenuItems = getResources().getStringArray(R.array.leftMenuItems);
mDrawerList = (ListView) findViewById(R.id.left_menu);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
// Generate title
String[] title = new String[] { "item1", "item2", "item4", "item4" };
// Generate icon
int[] icon = new int[] { R.drawable.abc_ic_clear, R.drawable.abc_ic_clear,
R.drawable.abc_ic_clear, R.drawable.abc_ic_clear };
MenuListAdapter adapter = new MenuListAdapter(this, title, icon);
// Setting the adapter on mDrawerList
mDrawerList.setAdapter(adapter);
// Getting reference to the ActionBarDrawerToggle
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_drawer,
R.string.drawer_open,
R.string.drawer_close) {
public void onDrawerOpened(View drawerView) {
vstitle.setText("Menu");
invalidateOptionsMenu();
}
public void onDrawerClosed(View view) {
vstitle.setText("App");
invalidateOptionsMenu();
}
};
// Setting DrawerToggle on DrawerLayout
mDrawerLayout.setDrawerListener(mDrawerToggle);
I found some related topics, but it's not helpful for me
LinearLayout is a view group that aligns all children in a single direction, vertically or horizontally. You can specify the layout direction with the android:orientation attribute. Note: For better performance and tooling support, you should instead build your layout with ConstraintLayout.
Most of what can be achieved in LinearLayout and RelativeLayout can be done in ConstraintLayout. However, learning the basics of LinearLayout and RelativeLayout is important before trying to understand how to use it with ConstraintLayout.
Hoorray! I found problem in my code.
In function selectItem need change mDrawerLayout.closeDrawer(mDrawerList);
to mDrawerLayout.closeDrawer(mDrawerLinear);
Now it works perfectly! Thanks to all
I try sample on my side with your provide code and did some modicatons . please check this if it might help you ..
activity_main.xml file
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="4dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="0dp" />
<LinearLayout
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical" >
<ListView
android:id="@+id/left_menu"
android:layout_width="match_parent"
android:layout_height="300dip"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="#FFF"
android:dividerHeight="0.1dp" />
<TextView
android:id="@+id/joke_text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="5sp"
android:text="AAAAAA"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
and MainActivity.java
package com.example.navdrawer;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private LinearLayout mDrawerLinear;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLinear = (LinearLayout) findViewById(R.id.left_drawer);
//leftMenuItems = getResources().getStringArray(R.array.leftMenuItems);
mDrawerList = (ListView) findViewById(R.id.left_menu);
//mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
// set a custom shadow that overlays the main content when the drawer opens
//mDrawerLayout.setDrawerShadow(R.drawable.ic_launcher, GravityCompat.START);
// Generate title
String[] title = new String[] { "item1", "item2", "item4", "item4" };
// Generate icon
int[] icon = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher };
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, title);
//MenuListAdapter adapter = new MenuListAdapter(this, title, icon);
// Setting the adapter on mDrawerList
mDrawerList.setAdapter(dataAdapter);
// Getting reference to the ActionBarDrawerToggle
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher) {
@SuppressLint("NewApi")
public void onDrawerOpened(View drawerView) {
// vstitle.setText("Menu");
invalidateOptionsMenu();
}
@SuppressLint("NewApi")
public void onDrawerClosed(View view) {
// vstitle.setText("App");
invalidateOptionsMenu();
}
};
// Setting DrawerToggle on DrawerLayout
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With