9

这是我的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 ( ) 中有一个drawable flame_icon,它被设置为background。我希望它居中。没有文字,只有图像。我需要一个切换按钮,因为选择时我需要一个活动状态。

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

4

4 回答 4

15

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

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

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

<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 一起放置应该会自动居中。

于 2013-05-15T01:12:43.580 回答
10

我对接受的答案没有任何运气,但也许我的情况略有不同。我见过的另一个解决方案是使用 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>
于 2013-10-16T16:23:34.307 回答
0

我使用了android:drawableTopRarw 描述的按钮,但由于我的按钮又高又宽,所以它只是挂在顶部。不是很集中......所以我摆弄了一下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=""

    />

我认为这将适用于我的目的

于 2013-11-08T15:51:42.490 回答
0

也许会对你有所帮助。查看页面底部的 zapl 解决方案。PS不知道怎么链接具体的答案,这里新XD

于 2013-12-02T16:59:39.820 回答