可以创建没有文本的ToggleButton吗?

时间:2012-07-22 22:23:41

标签: android android-layout button togglebutton

我想像这样创建一个Android默认ToggleButtonenter image description here

但我想创建它而不用TEXT

我尝试使用此代码:

ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);

但它会在水平绿色条的顶部留下一个空白区域。

我不想要那个空的空间,我只想要水平的绿色条。

如何实现它?

感谢

10 个答案:

答案 0 :(得分:22)

顶部的空白空间是由默认的toggleButton样式中使用的2 Ninepatch(btn_toggle_off.9.pngbtn_toggle_on.9.png)引起的。

要使水平条完美居中,您必须为ToggleButton创建一个新样式,该样式将使用两个新的九个派生派生形式原始。

编辑: 需要最少XML的方法:

  • 为您的togglebutton创建两个九个补丁,命名为:my_btn_toggle _ on和my_btn_toggle_off

  • 在可绘制文件夹中
  • ,创建my_btn_toggle.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="false" android:drawable="@drawable/my_btn_toggle_off" />
        <item android:state_checked="true" android:drawable="@drawable/my_btn_toggle_on" />
    </selector>
    
  • 在您的代码中添加tb.setBackgroundResource(R.drawable.my_btn_toggle)

    ToggleButton tb = new ToggleButton(map);
    tb.setText(null);
    tb.setTextOn(null);
    tb.setTextOff(null);
    tb.setBackgroundResource(R.drawable.my_btn_toggle)
    

答案 1 :(得分:15)

只需设置以下内容:

<ToggleButton android:id="@+id/tbtn1" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@drawable/bg_check"
 android:textOn="" 
 android:textOff="" 
 android:text="" />

而且,xml风格,如果你需要......

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_checked="true" 
android:drawable="@drawable/bg_check_on" /> <!-- pressed -->

  <item android:drawable="@drawable/bg_check_off" /> <!-- default/unchecked -->
</selector>

希望有所帮助〜

答案 2 :(得分:9)

使用

<ToggleButton
    ...
    android:textOff="@null"
    android:textOn="@null"
    android:textSize="0dp" />

不仅会使文本消失,而且还会摆脱原本会显示的空白区域。

答案 3 :(得分:1)

我是这么认为的

android:textColor="@android:color/transparent"

答案 4 :(得分:0)

不是最优雅的解决方案,但如果你只是试图隐藏顶部的额外空间,你可以尝试tb.setTextSize(0);。可能需要将textOn / textOff设置为空字符串:tb.setTextOn("");

编辑:我最好选择extend Button创建您自己的自定义按钮,保持状态(请参阅此SO帖子了解压缩/未压缩状态:Pressed android button state)和找到要设置为适当状态的资产......

答案 5 :(得分:0)

 <ToggleButton
                android:id="@+id/setting_tb"
                style="@style/style_setting_tb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:checked="true"
                android:gravity="center"
                android:minHeight="0dp"
                android:minWidth="0dp"
                android:textColor="@color/White"
                android:textOff=""
                android:textOn=""
                android:textSize="14sp" />

答案 6 :(得分:0)

使用CheckBox代替ToggleButton更加轻松。它们具有相同的状态,因此可以实现相同的功能,但您可以通过定义CheckBox属性轻松更改<android:button="@drawable/...">外观。

答案 7 :(得分:0)

<ToggleButton
        android:id="@+id/tooglebutton"
        android:layout_width="60dp"
        android:layout_height="25dp"
        android:textOff="off"
        android:textOn="on"
        android:textSize="0dp"
       />

答案 8 :(得分:0)

像这样填充样式XML ..魔术是文本颜色透明......

android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textOff="blabla"
android:textOn="blablabla"
android:textColor="@android:color/transparent"
android:background="@drawable/boutmediumrouge"

/>

答案 9 :(得分:0)

布局File.xml

       <ToggleButton
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:background="@drawable/check"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

在main activity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ToggleButton mic = (ToggleButton)findViewById(R.id.toggle);
    mic.setTextOff(null);
    mic.setTextOn(null);
    mic.setText(null);

check.xml,由layout.xml使用

<?xml version="1.0" encoding="utf-8"?>

        

    <item android:drawable="@drawable/mic_on"
        android:state_checked="true">

    </item>
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/mic_off"
        android:state_checked="false">

    </item>

这些行就是您要寻找的那些

    mic.setTextOff(null);
    mic.setTextOn(null);
    mic.setText(null);