导航菜单和在android中的选择性片段上添加按钮
Posted
技术标签:
【中文标题】导航菜单和在android中的选择性片段上添加按钮【英文标题】:Navigation menu and add button on selective fragments in android 【发布时间】:2020-05-08 06:28:33 【问题描述】:我需要你的帮助来理解 android 中菜单的概念。 我在 android 中使用导航菜单(栏)并将其加载到 MainActivity 并放置三个不同的片段。
在应用启动时,导航菜单打开,默认片段也如下所述加载。
这里一切正常,但是当我单击第三个菜单选项(信用卡)然后在该片段中打开一个片段时,我正在使用 ListView,如下所述:
现在我想要栏上的添加按钮,在这里您可以在栏下方看到它。 我怎样才能做到这一点?请帮帮我。在这里,我想要左侧导航的汉堡图标,并在同一栏的右侧添加图标/按钮。
注意:我尝试在 DrawerLayout 内使用的工具栏上添加按钮,但此按钮出现在所有片段上。
这里是activity_main.xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.ac 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_
android:layout_
tools:context=".MainActivity"
android:id="@+id/drawer_layout"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:id="@+id/toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
>
</android.support.v7.widget.Toolbar>
<FrameLayout
android:layout_
android:layout_
android:id="@+id/fragement_container"/>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_
android:layout_
android:layout_gravity="start"
android:id="@+id/nav_view"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_menu" >
</android.support.design.widget.NavigationView>
</android.support.v4.widget.ac>
MainActivity.java
package com.mas.mas;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.nagivation_drawer_open, R.string.nagivation_drawer_close);
drawerLayout.addDrawerListener(drawerToggle);
drawerToggle.syncState();
if (savedInstanceState == null)
getSupportFragmentManager().beginTransaction().replace(R.id.fragement_container, new TransactionsListFragment()).commit();
setTitle("Transactions");
navigationView.setCheckedItem(R.id.transactions);
@Override
public void onBackPressed()
if (drawerLayout.isDrawerOpen(GravityCompat.START))
drawerLayout.closeDrawer(GravityCompat.START);
else
super.onBackPressed();
@Override
public boolean onNavigationItemSelected(MenuItem menuItem)
switch (menuItem.getItemId())
case R.id.transactions:
getSupportFragmentManager().beginTransaction().replace(R.id.fragement_container, new TransactionsListFragment()).commit();
setTitle("Email");
break;
case R.id.banks:
// getSupportFragmentManager().beginTransaction().replace(R.id.fragement_container, new MessageFragement()).commit();
setTitle("Banks");
break;
case R.id.cards:
setTitle("Cards");
getSupportFragmentManager().beginTransaction().replace(R.id.fragement_container, new CardsFragment()).commit();
break;
drawerLayout.closeDrawer(GravityCompat.START);
return true;
谢谢。
【问题讨论】:
在 DrawerLayout 的工具栏中添加按钮,并在 onNavigationItemSelected 中设置按钮的可见性。 将menu
添加到信用卡片段
@Rajnishsuryavanshi 好的,但此按钮事件仅在主要活动类中有效,如何在单击同一按钮时打开 addBank、addCard 片段。
【参考方案1】:
在mainActivity的工具栏中添加按钮
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<RelativeLayout
android:layout_
android:layout_>
<ImageView
android:id="@+id/adimage"
android:layout_marginBottom="@dimen/padd_10"
android:layout_marginTop="@dimen/padd_10"
android:layout_alignParentRight="true"
android:layout_
android:layout_
android:src="@drawable/ad"></ImageView>
</RelativeLayout>
然后在 mainActivity.java 中将它用于 onClick Listner
Toolbar toolbar = findViewById(R.id.toolbar);
adsImageView=toolbar.findViewById(R.id.adimage);
adsImageView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
希望对你有帮助
【讨论】:
我之前试过这个,主要问题是按钮监听器只在 MainActivity 类中工作,我如何在点击同一个按钮时打开不同的添加页面。就像我想在卡片页面上打开 AddCard 并单击添加按钮和 AddBanks 当我将在银行按钮上并单击添加按钮时一样。以上是关于导航菜单和在android中的选择性片段上添加按钮的主要内容,如果未能解决你的问题,请参考以下文章