gpt4 book ai didi

android - 以编程方式更改 clans fab 菜单方向

转载 作者:行者123 更新时间:2023-11-29 19:09:30 26 4
gpt4 key购买 nike

我正在使用 clans fab library创建带有一组按钮的菜单。

我的菜单 fab 作为打开方向设置为“向上”,如果手机处于纵向模式,这工作得很好。但是,如果我将其切换为横向模式,一半的按钮会被裁剪掉。

我想知道是否可以在我的 onConfigurationChanged 方法上以编程方式更改 fab 菜单打开方向。

像这样:

override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// set menu fab orientation to start|left
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
// set menu fab orientation to up
}
}

我似乎找不到以编程方式更改此设置的方法。有人知道怎么做吗?

最佳答案

遗憾的是, float 操作菜单目前仅支持向上和向下打开方向。

Option to expand menu up and down

目前也没有以​​编程方式更改配置方向的选项:它是在 XML 中设置的。

添加水平布局按钮的选项将需要对库进行重大更改,因为测量和布局例程未设置为处理这种情况。

推荐

鉴于当菜单水平显示时标签会从上到下排列,您的用户体验无论如何都会受到负面影响。此外,大量菜单项在某种程度上击败了 design intention首先是 FAB。

A floating action button represents the primary action in an application. A floating action button is used for a promoted action.

考虑到所有这些,我强烈建议您重新考虑您的方法,并限制您添加到 FAB 菜单的项目数量,以便项目适合两个方向。将不适合选项菜单或适当放置的上下文弹出菜单的项目移动。

作为旁注,氏族的 repo 是生命的终结。我不知道谁会接管它,但它目前的状态是有风险的。

处理配置更改

有些情况下,存储库不允许基于配置进行编程更改,但有一种解决方法:使用基于配置的 fragment 来实现相同的结果。例如:

res/layout/activity_main.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.example.fabmenu.MainActivity">

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

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>

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

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

<!-- Replace the FAB with a fragment reference -->
<include layout="@layout/fragment_fab_menu"/>

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

现在我们创建两个文件,一个用于纵向,一个用于横向:

res/layout/fragment_fab_portrait.xml

<?xml version="1.0" encoding="utf-8"?>
<com.github.clans.fab.FloatingActionMenu
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"
...
app:menu_openDirection="left"
>

<com.github.clans.fab.FloatingActionButton
android:id="@+id/menu_item_horse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/fab_add"
app:fab_colorNormal="@color/colorAccent"
app:fab_label="Horse"
app:fab_size="mini"/>

...

</com.github.clans.fab.FloatingActionMenu>

res/layout/fragment_fab_landscape.xml(注意:'left' 在这种情况下是虚构的。)

<?xml version="1.0" encoding="utf-8"?>
<com.github.clans.fab.FloatingActionMenu
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"
...
app:menu_openDirection="left"
>

<com.github.clans.fab.FloatingActionButton
android:id="@+id/menu_item_horse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/fab_add"
app:fab_colorNormal="@color/colorAccent"
app:fab_label="Horse"
app:fab_size="mini"/>

...

</com.github.clans.fab.FloatingActionMenu>

这两个文件之间的唯一区别是我们需要根据配置更改布局。

现在我们添加魔法将它们组合在一起。两个文件让 Android 知道选择哪个文件。

/res/values/layouts.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="fragment_fab_menu" type="layout">@layout/fragment_fab_portrait</item>
</resources>

/res/values/layouts-land.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Here name refers to the id we gave it in activity_main.xml -->
<item name="fragment_fab_menu" type="layout">@layout/fragment_fab_landscape</item>
</resources>

有关详细信息,请参阅 Supporting Different Screen Sizes

关于android - 以编程方式更改 clans fab 菜单方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com