2017-05-28 79 views
1

任何人都可以请帮我设计这个android布局?我想在抽屉工具栏上放置两个图标,如下图所示。如何创建一个带有自定义图标的安卓抽屉?

enter image description here

这是LeftNavigationActivity.class

public class LeftNavigationActivity extends BaseActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 
private ImageView profilePic; 
Session session; 
FragmentManager fragmentManager = getSupportFragmentManager(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_left_navigation); 
    this.setTitle("Home"); 
session = new Session(this); 
if (!session.loggedIn()) { 
    logOut(); 
} 

View v = getLayoutInflater().inflate(R.layout.nav_header_left_navigation, 
null); 

TextView username = (TextView) v.findViewById(R.id.username); 
Intent intent = getIntent(); 
String uname = intent.getStringExtra("username"); 
Toast.makeText(this, "Welcome " + uname, Toast.LENGTH_SHORT).show(); 
username.setText(uname); 


LoansAndDebtsFragment loansAndDebtsFragment = new LoansAndDebtsFragment(); 
fragmentManager.beginTransaction().replace(R.id.layout_for_fragment, 

loansAndDebtsFragment, loansAndDebtsFragment.getTag()).commit(); 

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


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.addDrawerListener(toggle); 
toggle.syncState(); 

NavigationView navigationView = (NavigationView) 

findViewById(R.id.nav_view); 

navigationView.setNavigationItemSelectedListener(this); 

} 

@Override 
public void onBackPressed() { 
    FragmentManager fragmentManager = this.getSupportFragmentManager(); 
    int stackCount = fragmentManager.getBackStackEntryCount(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else if (fragmentManager.getFragments() != null) { 
     LoansAndDebtsFragment loansAndDebtsFragment = new 

LoansAndDebtsFragment(); 


fragmentManager.beginTransaction().replace(R.id.layout_for_fragment, 

loansAndDebtsFragment, loansAndDebtsFragment.getTag()).commit(); 

    } 
} 

的LeftNavigationActivity是包含导航菜单中的BaseDrawerActivity。

这是app_bar_left_navigation.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 

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="com.gebeya.jo.pyf.activities.LeftNavigationActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.NoToolBarWithABrandTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/colorWhite" 
     app:titleTextColor="@color/colorBrand1" 
app:popupTheme="@style/AppTheme.NoToolBarWithABrandTheme.PopupOverlay" /> 
</android.support.design.widget.AppBarLayout> 

<include layout="@layout/content_left_navigation" /> 

</android.support.design.widget.CoordinatorLayout> 

这是nav_header_left_navigation.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

android:layout_width="match_parent" 
android:layout_height="190dp" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:background="@drawable/nav_background" 
android:orientation="vertical"> 

<de.hdodenhof.circleimageview.CircleImageView 
    android:id="@+id/profile_image" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:src="@drawable/eyasu" 
    android:layout_marginLeft="20dp" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    app:civ_border_color="@color/colorBrand1" 
    app:civ_border_width="4dp" 
    android:layout_alignParentStart="true" 

    android:paddingBottom="10dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="@string/userFullName" 
    android:textSize="14sp" 
    android:textColor="#FFF" 
    android:textStyle="bold" 
    android:gravity="left" 
    android:paddingBottom="4dp" 
    android:id="@+id/username" 
    android:layout_above="@+id/email" 
    android:layout_alignLeft="@+id/profile_image" 
    android:layout_alignStart="@+id/profile_image" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/email" 
    android:hint="@string/userEmail" 
    android:gravity="left" 
    android:layout_marginBottom="8dp" 
    android:textSize="14sp" 
    android:textColor="#fff" 
    android:layout_alignParentBottom="true" 
    android:layout_alignLeft="@+id/username" 
    android:layout_alignStart="@+id/username" /> 

</RelativeLayout> 
+0

告诉我们的,你已经尝试了什么至今https://stackoverflow.com/help/mcve – Blundell

+0

我已经张贴代码代码,请审查为了我。提前致谢。 – eyajosh

+0

你想用图标添加徽章吗? – FAT

回答

0
  1. 打开Android工作室
  2. 开始一个新的Android Studio项目
  3. 选择抽屉式导航栏活动
  4. 这里选择你的图标:https://material.io/icons/
+0

在Android studio中有很多svg图标 –

0

创建menu XML与你所需菜单items并把这个XML为res/menu/文件夹中。

menu.xml文件:

<menu 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" 
    tools:context="com.ferdous.advancefilter.MainActivity"> 

    <item 
     android:id="@+id/action_notification" 
     android:title="Notification" 
     android:icon="@drawable/ic_action_notification" 
     app:showAsAction="always" /> 

    <item 
     android:id="@+id/action_warning" 
     android:title="Notification" 
     android:icon="@drawable/ic_action_warning" 
     app:showAsAction="always" /> 
</menu> 

2.在你的活动,重写方法onCreateOptionsMenu()菜单项添加到Toolbar和覆盖方法onOptionsItemSelected()处理工具栏item click事件。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    switch (id) { 
     case R.id.action_notification: 
      // Do something 
      break; 
     case R.id.action_warning: 
      // Do something 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

OUTPUT:

enter image description here

#。如果你想添加计数badge在您的菜单item像下面那么你可以按照我的另一个答案Notification Badge On Action Item Android。我添加了详细的步骤和代码。

enter image description here

希望这将有助于〜

+0

他试图实现导航抽屉而不是工具栏动作 –

+0

请参阅他附加的图像和问题描述:“我想在抽屉工具栏上放置两个图标,如下图所示” – FAT

+1

是对的,我错了......他不明白术语,我很困惑,他提供的问题和代码 –