【问题标题】:Android: Floating Button Icon is not centredAndroid:浮动按钮图标未居中
【发布时间】:2017-05-19 12:34:11
【问题描述】:

我正在尝试在我的应用中创建一个浮动按钮。按钮在那里,但按钮中的图像有点向上(见图)。

我无法弄清楚它有什么问题。以下是浮动按钮的部分 XML。

<android.support.design.widget.FloatingActionButton
        android:id="@+id/buttonUp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="16dp"
        android:layout_marginTop="480dp"
        android:clickable="true"
        android:scaleType="center"
        android:src="@drawable/btn_back_to_top_3x"
        app:layout_anchor="@id/layout"
        app:layout_anchorGravity="bottom|right|end"
        app:backgroundTint="@android:color/background_light"
        app:fabSize="normal" />

按钮显示我想要的位置。唯一的问题似乎是里面的图像不是中心。为什么会这样?

编辑: 环顾四周后,我意识到图像本身存在问题,图像实际上没有居中并且底部有空间(这导致图像被向上推)。

【问题讨论】:

  • @Charuka 是的,这是正确的原因,抱歉我刚才没有检查。忙着处理一些突发的问题。谢谢

标签: android floating-action-button


【解决方案1】:

我也遇到过同样的问题。以下解决方案对我有用

app:fabCustomSize="40dp"

【讨论】:

  • app:fabCustomSize 值不应始终为 40dp。取决于每个视图我必须使用 50dp
【解决方案2】:

您应该将 fabCustomSize 值设置为 FAB 的确切大小:

<android.support.design.widget.FloatingActionButton
        android:layout_width="60dp"
        android:layout_height="60dp"
        app:fabCustomSize="60dp"
        android:src="@drawable/plus_icon"
        app:rippleColor="@color/colorPrimaryDark" />

【讨论】:

  • 谢谢!为什么这是必要的?
【解决方案3】:

我只是设置了 app:fabCustomSize=”40dp”(需要的大小)并将高度和宽度设置为 wrap_content 然后问题解决了

【讨论】:

    【解决方案4】:

    原因是您的图片尺寸不合适!

    浮动操作按钮默认圆形大小为 56 x 56dp , 为了获得最适合的效果,请使用它作为您的背景图片!

    如果你想要一个迷你的应该是:40 x 40dp

    如果您只想更改内部图标(仅图标),请使用 24 x 24dp 图标作为默认尺寸

    为了再次测试这一点,我从互联网上下载了一个图像并将其缩小到 56dp,并保留了一个小空间来平衡它(我不擅长 Photoshop)

    并将其添加到您的 FB 视图中,并将背景设为黄色以使其清晰。让我们看看

    输出:

    这意味着它取决于您添加的图像及其大小,如果您想要全背景,您甚至可以使用imageButton

    参考:https://material.io/guidelines/components/buttons-floating-action-button.html#buttons-floating-action-button-floating-action-button

    【讨论】:

    • 您好,请不要删除您的原始答案并复制下面的答案好吗?谢谢。
    • @Demindiro 回滚编辑或标记它以供版主这样做。
    【解决方案5】:

    您只需添加 app:fabCustomSize="40dp" 它对我有用

    【讨论】:

    • app:fabCustomSize="40dp" 也为我工作。感谢 stackoverflow 社区。​​span>
    • 这和第二个答案一模一样,这有什么不同或有什么帮助?
    【解决方案6】:

    这里是设置三个选项一起调整导航按钮的图标大小

    1. 布局宽度和高度。

    2. 在 nav.Button 内更改图标大小 ~ 使用 (maxImageSize="..dp")。

    3. 更改晶圆厂尺寸 ~ 使用 (app:fabCustomSize="..dp") 或 (app:fabSize="") 您可以在此处尝试三个选项(“mini”或“auto”或“normal”)。 例如:

      <com.google.android.material.floatingactionbutton.FloatingActionButton
       android:layout_width="40dp"
       android:layout_height="40dp"
       app:maxImageSize="20dp"
       app:fabSize="mini"/>
      

    【讨论】:

      【解决方案7】:

      尝试修复你的高度和宽度...

          android:layout_width="50dp"
          android:layout_height="50dp"
      

      请以另一种方式调整底部的布局..因为这里哟

       android:layout_marginTop="480dp" 
      

      这不是我的建议尝试将 FloatingActionButton 设置在相对布局中的正确方法..并像这个属性一样设置..

          android:layout_alignParentBottom="true"
          android:layout_alignParentRight="true"
          android:layout_alignParentEnd="true"
      

      【讨论】:

      • 为什么不是 android:layout_marginBottom?你不认为 marginTop 会在不同的屏幕上产生问题吗?
      • 感谢您的建议,我找到了问题(原来是图像不居中,底部有一些空间,不敢相信我没有注意到它) .但是感谢您的布局建议。
      【解决方案8】:

      这通常在使用自定义大小的浮动操作按钮(FAB)时出现,因为默认情况下,android 只支持 40dp FAB。最好的方法是覆盖它,通过告诉您的视图您正在使用自定义大小的 FAB,并为其赋予与 value 相同的大小。

      例如,在使用 60dp x 60dp FAB 时,这样就可以解决问题。

      app:fabCustomSize="60dp"

      【讨论】:

        【解决方案9】:

        除了上述答案,无论您为 FAB 设置什么尺寸,都设置为 fabCustomSize

        例如,如果宽度和高度为“48dp”,则将 fabCustomSize 设置为“48dp”:​​

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:backgroundTint="@color/grey"
            android:src="@drawable/ic_baseline_arrow_back"
            app:fabCustomSize="48dp" />
        

        【讨论】:

          【解决方案10】:

          使用 (https://github.com/futuresimple/android-floating-action-button) 并将 fab:fab_icon="@drawable/ic_fab_star" 设置为中心图标

          【讨论】:

            【解决方案11】:

            最好的解决方案是不要硬编码 FAB 的维度。

            图标将以属性android:scaleType="center"居中

            <android.support.design.widget.FloatingActionButton
                            android:id="@+id/search_fab"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:scaleType="center"
                            android:layout_marginEnd="10dp"
                            android:src="@drawable/fab_search_icon"
                            app:backgroundTint="@color/colorPrimary"
                            app:elevation="4dp"
                            app:fabSize="normal"/>
            

            【讨论】:

            • 这不起作用.. 设置 app:fabCustomSize="40dp" 是我的解决方案
            • @mDonmez 这对你有好处。您也可以在编辑后的帖子中查看代码。
            猜你喜欢
            • 2019-03-09
            • 2020-08-31
            • 2016-03-02
            • 2021-06-04
            • 2012-02-20
            • 2019-10-13
            • 1970-01-01
            • 2019-04-16
            • 2018-12-18
            相关资源
            最近更新 更多