【问题标题】:Centering ToggleButton Image - With No Text居中切换按钮图像 - 没有文字
【发布时间】:2013-05-09 05:21:35
【问题描述】:

这是我的ToggleButton:

<ToggleButton
            android:id="@+id/bSmenuTopItems"
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:background="@drawable/master_button_selector"
            android:drawableLeft="@drawable/flame_icon" />

此图像中没有文字,由于处于活动状态,我需要 ToggleButton。

编辑:我认为问题被误解了。 Toggle Button (flame_icon) 内有一个drawable,它被设置为background。我希望它居中。没有文字,只有图像。我需要一个 Toggle Button,因为我需要在选中时拥有一个 Active State。

只有drawableLeft、drawableRight、drawableTop 等。我想要一个似乎不存在的draweableMiddle。

【问题讨论】:

  • (1) 为什么要重50?在这一行中是否有大量的对象不能使用 1 来表示相同的权重? (2)什么样的布局?您是否尝试过 layout_gravity 而不仅仅是重力?如果是相对布局,还是 center_horizo​​ntal?
  • @Rarw 这是一个LinearLayout。但是为什么这会影响button 内部发生的事情呢?
  • 我以为您将按钮居中。您要让按钮中的图像居中吗?
  • @Rarw 是的,这正是我正在尝试的。填充似乎是可绘制的唯一选择

标签: android button togglebutton


【解决方案1】:

我修改了答案以回答您修改后的问题。

据我所知,drawableLeft、drawableRight 和 drawableTop 按钮控制图像相对于选择器(a/k/a 开/关)指示器的放置位置。顶部将其放置在指示器上方,左右分别将其放置到特定的一侧。我不相信您可以删除选择器指示器,因为这会破坏使用ToggleButton 的目的。

我能够使用以下布局在 2 ToggleButtons 中居中 2 个可绘制对象。为了使ToggleButton 中的图像居中,我使用了drawableTop,以便图像出现在选择指示器上。然后我将textOn 和textOff 都设置为空字符串。如果您不设置此项,则默认的开/关文本会出现在选择器指示器上方,并将可绘制对象推到一边。

<LinearLayout 
    android:id="@+id/buttonContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"> 

   <ToggleButton
    android:id="@+id/bSmenuTopItems"
        android:layout_width="0"
        android:layout_weight="1"
        android:layout_height="75dp"
        android:checked="false"
        android:drawableTop="@drawable/flag"
        android:textOn=""
        android:textOff=""
        android:layout_gravity="center"
        android:textColor="#cecece" />

    <ToggleButton
        android:id="@+id/bSmenuTopItems2"
        android:layout_width="0"
        android:layout_height="75dp"
        android:layout_weight="1"
        android:checked="false"
        android:textOn=""
        android:textOff=""
        android:drawableTop="@drawable/chaticon"
        android:layout_gravity="center"
        android:textColor="#cecece" />

</LinearLayout>

您所要做的就是调整按钮的高度,以将您的图标相对于您想要的选择器图标定位。我唯一的其他建议是控制您使用的图像的大小。如果您可以仅调整图像相对于按钮的尺寸,则将其与 drawableTop 一起放置应该会自动居中。

【讨论】:

  • 对不起,我认为问题被误解了。我已经更新了。
  • 修改答案以匹配问题
  • @Rarw 我正在尝试在 atm 做同样的事情,所以没有办法将图像放在按钮的中心而不调整图像大小?我会担心它会如何出现在多个设备上手动调整大小(这是一个有效的问题吗?)。
  • @DanielImms 我能够使用上面描述的方法将图像居中放置在按钮中。我相信没有drawableCenter XML 属性,因为定位与按钮中的切换/选择指示器有关。如果您担心方法2,您可以根据屏幕大小调整使用的图像。我的第三个建议是使用常规按钮,更改背景颜色或图像onClick 以指示突出显示状态,然后排序在不使用内置表单的情况下创建自己的切换按钮。
  • @Rarw 我最终使用drawablePadding 将其居中。
【解决方案2】:

我对接受的答案没有任何运气,但也许我的情况略有不同。我见过的另一个解决方案是使用 drawablePadding 属性将 topDrawable 推向按钮的中心。这在一定程度上可行,但它假定按钮的尺寸是固定的,即使这样,也很难将图标完美居中。

这是我想出来的。不要在按钮本身上指定图标。相反,将按钮的背景设置为图层列表可绘制对象,该可绘制对象在所需的选择器上绘制所需的图标,如下所示:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/master_button_selector" />
    <item>
        <bitmap android:src="@drawable/flame_icon" android:gravity="center" />
    </item>
</layer-list>

【讨论】:

  • 工作就像一个魅力......不知道为什么我以前没有将其视为解决方案。
  • 我想知道当需要显示不同的状态时这将如何工作?
  • @ClumsyHamster 如果您实际上好奇,您可以随时尝试,而不是在 StackOverflow 上大声思考。 ;) 效果很好。请注意,第一个 &lt;item&gt; 是一个选择器。按钮的状态更改会向下传播。
【解决方案3】:

我使用了 Rarw 描述的android:drawableTop,但由于我的按钮又高又宽,所以它只是挂在顶部。不是很集中......所以我摆弄了paddingTop,它可能在这里工作我得到的:

   <ToggleButton 
    android:id="@+id/togglebutton1"
    android:paddingTop="50dp"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:drawableTop="@drawable/music_collection_small"
    android:textOn=""
    android:textOff=""

    />

我认为它会为我的目的工作

【讨论】:

    【解决方案4】:

    也许this 会帮助你。查看页面底部的解决方案 扎普尔 P.S 不知道怎么链接具体答案,这里新XD

    【讨论】:

    • 仅供参考,这并不是真正的答案(至少不是质量答案)。一旦您有足够的代表发表评论,请发表评论。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2019-02-03
    • 2013-09-07
    • 2021-09-11
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多