LinearLayout dans le tiroir de navigation

Je veux placer TextView du bas ListView dans le tiroir de navigation. Lance java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams

Main.xml

  <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> 

Et le code java:

 // 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); 

J'ai trouvé des sujets connexes, mais ce n'est pas utile pour moi

  • La vue grille Universal Image Loader clignote après notificationDataSetChanged call
  • Android SyncAdapter initialise automatiquement le synchronisation
  • Installation de l'application Android: échec inconnu (échec - non installé pour 0)
  • Bouclez tous les enfants de GroupView?
  • Fragment backstack bug lors du remplacement de fragments dans une transaction?
  • Existe-t-il un moyen de localiser par programme chaque Windows dans une application donnée?
    1. Comment mettre des éléments de liste au bas de la vue de liste dans le tiroir de navigation comme Foursquare
    2. Ajout d'une disposition linéaire au tiroir de navigation (finit par s'écraser avec une exception ClassCastException)

  • Désistement et application dans Google Play uniquement pour les testeurs non bêta
  • Obtenir des dimensions d'écran en pixels
  • Le clavier doux Android ne fonctionne pas
  • Comment postuler * .cube Lut dans les bitmaps Android?
  • Convertir l'objet sur JSON dans Android
  • Comment puis-je obtenir la date et l'heure du fournisseur du réseau?
  • 3 Solutions collect form web for “LinearLayout dans le tiroir de navigation”

    Hoorray! J'ai trouvé un problème dans mon code. Dans la fonction selectItem doit changer mDrawerLayout.closeDrawer(mDrawerList); À mDrawerLayout.closeDrawer(mDrawerLinear); Maintenant, ça fonctionne parfaitement! Merci à tous

    Je tente un échantillon de mon côté avec votre code de fourniture et fait quelques modicatons. Vérifiez si cela pourrait vous aider …

    Fichier activity_main.xml

     <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> 

    Et 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; } } 

    Si vous utilisez Eclipse, essayez de faire un Project->Clean .

    En outre, supprimez l'attribut xmlns:android="http://schemas.android.com/apk/res/android de votre définition FrameLayout dans le xml car ce n'est pas nécessaire.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.