GVKun编程网logo

C#WinForms中的ToggleButton(c# toolstripbutton控件)

19

对于想了解C#WinForms中的ToggleButton的读者,本文将是一篇不可错过的文章,我们将详细介绍c#toolstripbutton控件,并且为您提供关于AndroidToggleButto

对于想了解C#WinForms中的ToggleButton的读者,本文将是一篇不可错过的文章,我们将详细介绍c# toolstripbutton控件,并且为您提供关于Android ToggleButton、Android ToggleButton:状态切换的Button、android – ListView中的ToggleButton,值在滚动时自动更改、android – 用于打开和关闭状态的ToggleButton文本标签放置的有价值信息。

本文目录一览:

C#WinForms中的ToggleButton(c# toolstripbutton控件)

C#WinForms中的ToggleButton(c# toolstripbutton控件)

是否可以在C#WinForms中创建切换按钮?我知道您可以使用CheckBox控件并将其Appearance属性设置为“
Button”,但它看起来并不正确。我希望它在按下时看起来凹陷而不是平坦。有什么想法吗?

答案1

小编典典

我最终重写了OnPaint和OnBackgroundPaint事件,并根据需要手动绘制按钮。效果很好。

Android ToggleButton

Android ToggleButton

ToggleButton有两种状态:选中和未选择状态,并且需要为不同的状态设置不同的显示文本:

<ToggleButton 
            android:id="@+id/textview_show_all"
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:textOn="ON" //选中显示文本
            android:textOn="OFF" //未选中显示文本
           />

 选中状态显示效果

 

未选中的时候显示效果

 

 

toggleButton.setOnCheckedChangeListener(); // 对应点击事件--- 

public CharSequence getTextOff ();   // 返回按钮未选中时的文本。返回值  文本

public CharSequence getTextOn ();    //返回按钮选中时的文本。  返回值    文本

setBackgroundDrawable (Drawable d);  //设置指定的可绘制(译者注:如图片)为背景

setChecked (boolean checked);     // 改变按钮的选中状态。

setTextOff (CharSequence textOff);   // 设置按钮未选中时显示的文本。

setTextON (CharSequence textOn);   // 设置按钮选中时显示的文本。

onFinishInflate ();//XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。

drawableStateChanged ();//在视图状态的变化影响到所显示可绘制的状态时调用这个方法。

Android ToggleButton:状态切换的Button

Android ToggleButton:状态切换的Button



Android ToggleButton:状态切换的Button

Android ToggleButton和Android Button类似,但是ToggleButton提供了一种选择机制,可以表达Button处于何种状态,比如常见的WiFi打开或者关闭状态等等这种类似与非门的状态机。
标准的Android ToggleButton样式简单,如果要实现自定义的、表达力丰富的ToggleButton,其中一个方式就是写selector.xml文件作为ToggleButton的background,现在写一个例子。
布局文件activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="zhangphil.demo.MainActivity">

    <ToggleButton
        android:id="@+id/toggleButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:checked="true"
        android:textOff="关闭"
        android:textOn="打开"
        android:background="@drawable/selector"/>
</RelativeLayout>


activity_main.xml需要的、位于drawable目录下的selector.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/darker_gray" android:state_checked="false" />
    <item android:drawable="@android:color/holo_green_light" android:state_checked="true" />
</selector>


上层Java代码:

package zhangphil.demo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ToggleButton mToggleButton = (ToggleButton) findViewById(R.id.toggleButton);
        mToggleButton.setOnCheckedChangeListener(mOnCheckedChangeListener);
    }

    private ToggleButton.OnCheckedChangeListener mOnCheckedChangeListener = new ToggleButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            String s="";

            if(isChecked)
                s="打开";
            else
                s="关闭";

            Toast.makeText(getApplication(),s,Toast.LENGTH_SHORT).show();
        }
    };
}


代码运行结果如图:


附录文章:

1,《Android Segmented RadioButton》链接地址:http://blog.csdn.net/zhangphil/article/details/51441677
2,《Android选项切换条SHSegmentControl》链接地址:http://blog.csdn.net/zhangphil/article/details/49720805

android – ListView中的ToggleButton,值在滚动时自动更改

android – ListView中的ToggleButton,值在滚动时自动更改

我有一个带有一些项目的ListView.我在ListView的每一行都有toggleButton.假设没有选择任何toggleButtons.滚动效果很好.但当我检查toogleButton,然后滚动我的listView时,当所选的toggleButton的行向上移动时,最后一个toggleButton(未选中)会自动检查.这种模式还在继续.我认为它与重用listItems的行有关.
我在下面添加了适配器类,列表项加载
public View getView(int position,View convertView,ViewGroup parent) {
    // Todo Auto-generated method stub
    View rowview = convertView;
    if (null == rowview) {

        rowview = inflator.inflate(R.layout.groupsettinglistitem,null);            
        SettingsGroupListItem viewholder=new SettingsGroupListItem();
        viewholder.gpname=(TextView) rowview.findViewById(R.id.textView1);
        viewholder.status=(ToggleButton) rowview.findViewById(R.id.ToggleButton1);
        viewholder.status.setonClickListener(new OnClickListener() {

            public void onClick(View v) {
                // Todo Auto-generated method stub
            Toast.makeText(v.getContext(),"click",Toast.LENGTH_SHORT);    
            }
        });

        rowview.setTag(viewholder);

    }
    SettingsGroupListItem holder=(SettingsGroupListItem) rowview.getTag();
    holder.gpname.setText(items[position].getGpname().getText().toString());
    rowview.setTag(holder);
    return rowview;
}

解决方法

这两个方法添加在BaseAdapter类中.
@Override
            public int getViewTypeCount() {                 
                          //Count=Size of ArrayList.
                return Count;
            }

            @Override
            public int getItemViewType(int position) {

                return position;
            }

android – 用于打开和关闭状态的ToggleButton文本标签放置

android – 用于打开和关闭状态的ToggleButton文本标签放置

反正有没有控制ToggleButton开启和关闭状态的文本位置?例如,我希望文本标签在打开时保持对齐,在关闭时保持右对齐.

编辑:
此外,我还要在左侧和右侧为文本添加一些填充.大约5dp.如果可能的话,可以更好地控制标签的位置.

回答:
这就是我需要的!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
button.setPadding(0,5,0);

解决方法

public class StackActivity extends Activity implements OnCheckedchangelistener {

    private ToggleButton tb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tb = (ToggleButton)findViewById(R.id.toggleButton1);
        tb.setonCheckedchangelistener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) 
    {
        if(isChecked)
        {
            tb.setGravity(Gravity.LEFT);
            tb.setPadding(5,0);    // Set left padding 
        } else
        {
            tb.setGravity(Gravity.RIGHT);
            tb.setPadding(0,0);    // Set right padding
        }
    }
}

今天关于C#WinForms中的ToggleButtonc# toolstripbutton控件的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android ToggleButton、Android ToggleButton:状态切换的Button、android – ListView中的ToggleButton,值在滚动时自动更改、android – 用于打开和关闭状态的ToggleButton文本标签放置的相关知识,请在本站搜索。

本文标签: