NavigationView (vue de navigation) a deux parties, la tête peut charger une mise en page, la barre de menus peut charger un fichier de menu. Généralement utilisé dans DrawerLayout. NavigationView est fourni par la bibliothèque Design Support, ajoutez d'abord des bibliothèques dépendantes.
compile 'com.android.support:design:24.2.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
Deux bibliothèques de dépendances sont ajoutées ici, la première est la bibliothèque Design Support et la seconde est un contrôle open source, qui est utilisé pour afficher l'image sous une forme circulaire;
Ensuite, écrivez un fichier de menu et un fichier de disposition d'en-tête pour charger l'en-tête et la barre de menus de NavigationView.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/call"
android:icon="@drawable/nav_call"
android:title="电话"
/>
<item
android:id="@+id/friends"
android:icon="@drawable/nav_friends"
android:title="好友"
/>
<item
android:id="@+id/location"
android:icon="@drawable/nav_location"
android:title="位置"
/>
<item
android:id="@+id/mail"
android:icon="@drawable/nav_mail"
android:title="邮件"
/>
</group>
</menu>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="180dp"
android:background="?attr/colorPrimary"
android:padding="10dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circleImageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="33dp"
android:src="@drawable/mn" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/circleImageView"
android:layout_centerHorizontal="true"
android:layout_marginTop="13dp"
android:text="我在等待,一个有你的未来!"
android:textColor="#fff"
android:textSize="12sp" />
</RelativeLayout>
Dans le fichier de menu, écrivez d'abord un groupe et le groupe de paramètres ne peut être sélectionné. Un CircleImageView (l'image est modifiée en cercle) et un TextView sont placés dans le fichier de mise en page.
Ajoutez le contrôle NavigationView dans le fichier de mise en page principal:
<RelativeLayout 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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.navigtionviewtest1.MainActivity">
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:headerLayout="@layout/nav_header"
app:menu="@menu/nav_menu"></android.support.design.widget.NavigationView>
</RelativeLayout>
app: headerLayout = ”@ layout / nav_header” charge la vue d'en-tête
app: menu = ”@ menu / nav_menu” charge les options du menu
Notez que xmlns: app = ”http://schemas.android.com/apk/res-auto” ajoute un nouvel espace de noms
Ensuite, écrivez les événements logiques dans le code:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setCheckedItem(R.id.call);//设置默认选中项
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
//设置点击事件
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Toast.makeText(MainActivity.this, "" + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
}
}