Как добавить информацию о профиле в ящик для Android-навигации?

Привет, я работаю с Android. Я добавил ящик навигации Android, как и в g mail для своего приложения. Теперь я хочу добавить изображение профиля, как на картинке. Я попробовал его в элементе списка. Но я хочу больше места, как на изображении. Как я могу это сделать ??? Пожалуйста, помогите мне, я новичок в android Введите описание изображения здесь

Вот мой код для элемента списка

mTitle = mDrawerTitle = getTitle(); // load slide menu items navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); // nav drawer icons from resources navMenuIcons = getResources() .obtainTypedArray(R.array.nav_drawer_icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.list_slidermenu); navDrawerItems = new ArrayList<NavDrawerItem>(); // adding nav drawer items to array // Home navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); // Find People navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); // Photos navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1))); // Communities, Will add a counter here navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1), true, "22")); // Pages navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1))); // What's hot, We will add a counter here navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1), true, "50+")); // Recycle the typed array navMenuIcons.recycle(); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); // setting the nav drawer list adapter adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); mDrawerList.setAdapter(adapter); 

Во-первых, я бы сказал, что вам нужно ранжировать свою информацию в порядке важности. Имя пользователя, по-видимому, самое важное и, следовательно, то, что им нужно, чтобы рассказать им

А) они вошли в систему и

Б) с какой учетной записью они вошли в систему.

Для получения дополнительной информации по этой ссылке https://ux.stackexchange.com/questions/44776/navigation-drawer-with-my-account-entry

Я также решу эту проблему. Просто измените некоторые из кода в XML и Java.

Код изменения следует ниже кода …… Я думаю, что решить вашу проблему

 <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" android:background="#ffffff" > <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- Listview to display slider menu --> <LinearLayout android:id="@+id/drawerll" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical" > <LinearLayout android:id="@+id/drawer" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/list_item_title" android:gravity="center_vertical" android:orientation="horizontal" > <ImageView android:layout_width="80dp" android:layout_height="80dp" android:paddingLeft="20dp" android:src="@drawable/pic_pic" /> <LinearLayout android:id="@+id/drawer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:background="@color/list_item_title" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="Shohel Rana" android:textSize="14sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center" android:text="test@gmail.com" android:textSize="14sp" /> </LinearLayout> </LinearLayout> <ListView android:id="@+id/list_slidermenu" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/list_item_title" android:choiceMode="singleChoice" android:dividerHeight="1dp" android:listSelector="@drawable/list_selector" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 1 <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" android:background="#ffffff" > <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- Listview to display slider menu --> <LinearLayout android:id="@+id/drawerll" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical" > <LinearLayout android:id="@+id/drawer" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/list_item_title" android:gravity="center_vertical" android:orientation="horizontal" > <ImageView android:layout_width="80dp" android:layout_height="80dp" android:paddingLeft="20dp" android:src="@drawable/pic_pic" /> <LinearLayout android:id="@+id/drawer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:background="@color/list_item_title" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="Shohel Rana" android:textSize="14sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center" android:text="test@gmail.com" android:textSize="14sp" /> </LinearLayout> </LinearLayout> <ListView android:id="@+id/list_slidermenu" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/list_item_title" android:choiceMode="singleChoice" android:dividerHeight="1dp" android:listSelector="@drawable/list_selector" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

И код Java Просто добавлен ниже код ::::

Final boolean drawerOpen = mDrawerLayout.isDrawerOpen (drawerll);

Здесь drawerll означает Total linear Layout. И mDrawerLayout.closeDrawer (drawerll);

И закрыть Layer Layout ….

Здесь Total Java Code:

 package by.fitbody;`enter code here` import java.util.ArrayList; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SearchView; import android.widget.Toast; import by.fitbody.adapter.NavDrawerListAdapter; import by.fitbody.model.NavDrawerItem; public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; // nav drawer title private CharSequence mDrawerTitle; // used to store app title private CharSequence mTitle; // slide menu items private String[] navMenuTitles; // private TypedArray navMenuIcons; private ArrayList<NavDrawerItem> navDrawerItems; private NavDrawerListAdapter adapter; private Context con = null; LinearLayout drawerll; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); con = this; final ActionBar bar = getActionBar(); bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor( R.color.customRed))); bar.setIcon(R.drawable.articles_05); mTitle = mDrawerTitle = getTitle(); // load slide menu items navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); // nav drawer icons from resources // navMenuIcons = getResources() // .obtainTypedArray(R.array.nav_drawer_icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.list_slidermenu); drawerll = (LinearLayout) findViewById(R.id.drawerll); makeSlideList(); // enabling action bar app icon and behaving it as toggle button getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.main_menu, // nav menu toggle icon R.string.app_name, // nav drawer open - description for // accessibility R.string.app_name // nav drawer close - description for // accessibility ) { @Override public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); // calling onPrepareOptionsMenu() to show action bar icons invalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); // calling onPrepareOptionsMenu() to hide action bar icons invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { // on first time display view for first nav item displayView(0); } } /* * make slide list */`enter code here` private void makeSlideList() { // TODO Auto-generated method stub navDrawerItems = new ArrayList<NavDrawerItem>(); // adding nav drawer items to array // Home navDrawerItems.add(new NavDrawerItem(navMenuTitles[0])); // Find People navDrawerItems.add(new NavDrawerItem(navMenuTitles[1])); // Photos navDrawerItems.add(new NavDrawerItem(navMenuTitles[2])); // Communities, Will add a counter here navDrawerItems.add(new NavDrawerItem(navMenuTitles[3])); // Pages navDrawerItems.add(new NavDrawerItem(navMenuTitles[4])); // What's hot, We will add a counter here navDrawerItems.add(new NavDrawerItem(navMenuTitles[5])); navDrawerItems.add(new NavDrawerItem(navMenuTitles[6])); navDrawerItems.add(new NavDrawerItem(navMenuTitles[7])); navDrawerItems.add(new NavDrawerItem(navMenuTitles[8])); // Recycle the typed array // navMenuIcons.recycle(); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); // setting the nav drawer list adapter adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); mDrawerList.setAdapter(adapter); } /** * Slide menu item click listener * */ private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // display view for selected nav drawer item displayView(position); } } @Override public boolean onCreateOptionsMenu(Menu menu) { final MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbarmenu, menu); // Associate searchable configuration with the SearchView final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); final SearchView searchView = (SearchView) menu.findItem( R.id.action_search).getActionView(); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); return super.onCreateOptionsMenu(menu); } /* * fo(non-Javadoc) * * @see android.app.Activity#onNewIntent(android.content.Intent) * * * for search bar */ @Override protected void onNewIntent(Intent intent) { setIntent(intent); handleIntent(intent); } /** * Handling intent data */ private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { final String query = intent.getStringExtra(SearchManager.QUERY); Log.e("Search text is ", query + ""); /** * Use this query to display search results like 1. Getting the data * from SQLite and showing in listview 2. Making webrequest and * displaying the data For now we just display the query only */ Toast.makeText(con, "Query is " + query, 1000).show(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // toggle nav drawer on selecting action bar app icon/title if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } // Handle action bar actions click switch (item.getItemId()) { case R.id.action_rate: Toast.makeText(con, "rate button is clicked", 1000).show(); return true; case R.id.action_best: Toast.makeText(con, "Best button is clicked", 1000).show(); return true; case R.id.action_liked: Toast.makeText(con, "liked button is clicked", 1000).show(); return true; default: return super.onOptionsItemSelected(item); } } /* * * Called when invalidateOptionsMenu() is triggered */ @Override public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hide the action items /* * active those code if you want to hide options menu when drawer is * opened. */ final boolean drawerOpen = mDrawerLayout.isDrawerOpen(drawerll); menu.findItem(R.id.action_best).setVisible(!drawerOpen); menu.findItem(R.id.action_liked).setVisible(!drawerOpen); menu.findItem(R.id.action_rate).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } /** * Diplaying fragment view for selected nav drawer list item * */ private void displayView(int position) { // update the main content by replacing fragments Fragment fragment = null; switch (position) { case 0: fragment = new ArticleFragment(position); break; case 1: fragment = new ArticleFragment(position); break; case 2: fragment = new ArticleFragment(position); break; case 3: fragment = new ArticleFragment(position); break; case 4: fragment = new ForumFragment(); break; case 5: final Intent i = new Intent(con, FitnessClubActivity.class); startActivity(i); break; case 6: fragment = new ArticleFragment(position); break; case 7: fragment = new ArticleFragment(position); break; case 8: fragment = new AboutUsFragment(); break; default: break; } if (fragment != null) { final FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); // update selected item and title, then close the drawer mDrawerList.setItemChecked(position, true); mDrawerList.setSelection(position); setTitle(navMenuTitles[position]); mDrawerLayout.closeDrawer(drawerll); } else { // error in creating fragment Log.e("MainActivity", "Error in creating fragment"); } } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } /** * When using the ActionBarDrawerToggle, you must call it during * onPostCreate() and onConfigurationChanged()... */ @Override protected void onPostCreate(Bundle savedInstanceState) {enter code here` super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggls mDrawerToggle.onConfigurationChanged(newConfig); } } 

Я думаю, это решит вашу проблему:

Я только что изменил код этого сайта: http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/

Вы также можете использовать пользовательский вид в NAvigatindrawer не только listvew. Итак, создайте LinearLayout с вашим рисунком и списком, и вы получите результат.

Взгляните на этот SO-поток: возможно ли использовать что-то, кроме списка, как скользящий ящик в drawerlayout

Повеселись 😉

Только для вашей информации вы можете использовать синтаксический анализ FB, который дает вам очень простой способ добавить эти apis и легко получить данные, они имеют простую документацию шаг за шагом, посмотрите

Вы можете прочитать об этом здесь: https://www.parse.com/docs

Я решил это, используя

 mDrawerList.addHeaderView(); 

Где вам нужно добавить объект View