Android студия action-bar в пользовательских мероприятиях - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть приложение, использующее шаблон Navigation Drawer Activity, проблема в том, что все фрагменты (действия) по умолчанию имеют панель действий, но мои пользовательские действия не отображают панель действий, а только заголовок.

Снимок экрана

Default main Fragment

one

custom made fragment

two

Код

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/customActionBarColor</item>
        <item name="colorPrimaryDark">@color/customActionBarDarkColor</item>
        <item name="colorAccent">@color/customAccentColor</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

MainActivity

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        val fab: FloatingActionButton = findViewById(R.id.fab)
        fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show()
        }
        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        val navView: NavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.nav_home, R.id.nav_services, R.id.nav_tools
            ), drawerLayout
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)
    }

HomeFragment

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        homeViewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)

        val root = inflater.inflate(R.layout.fragment_home, container, false)

        recyclerView = root.findViewById(R.id.categoriesRecycle)

        callAPIDemo()
        return root
    }

My custom activity

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_posts)
    callAPIDemo()
}

Есть идеи, почему это так?

PS: Если вам нужно больше кода, пожалуйста, не стесняйтесь спрашивать, я поделюсь с вами тем, что вам нужно.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Вы должны позвонить код ниже для пользовательских операций тоже

 val toolbar: Toolbar = findViewById(R.id.toolbar)
 setSupportActionBar(toolbar)

Также ваш xml должен для пользовательских действий должен содержать то же представление с R.id.toolbar Id

0 голосов
/ 28 февраля 2020

следующий шаг в вашем упражнении 1. Чтобы добавить настраиваемую панель действий в упражнении, сначала получите панель действий с помощью getSupportaActionBar ().

2. затем установите атрибут getSupportActionBar (). setDisplayShowCustomEnabled (true);

3. и создайте один пользовательский макет панели действий, который вы хотите теперь добавить в панель действий, используя getSupportActionBar (). setCustomView (R.layout.your_layout);

вот и все, что приведет к увеличению пользовательского макета на панели действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...