利用TextView做一个Switch效果的button

效果是这样的:        

 布局代码:

        <com.panxsoft.beautymirror.widget.layout.PercentLinearLayout
            android:id="@+id/clerk_switch_ll"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:padding="64px"
            app:padding_allPercent="0.04">

            <TextView
                android:id="@+id/clerk_switch_tv"
                android:layout_width="176px"
                android:layout_height="72px"
                android:background="@drawable/switch_selector"
                android:paddingLeft="24px"
                android:paddingRight="24px"
                android:textColor="@color/white"
                android:textSize="32px"
                app:layout_heightPercent="0.045"
                app:layout_widthPercent="0.11"
                app:padding_leftPercent="0.015"
                app:padding_rightPercent="0.015"
                app:text_sizePercent="0.02" />
        </com.panxsoft.beautymirror.widget.layout.PercentLinearLayout>

 

 布局代码里面的textview就是这个按钮,外面套一层LinearLayout是为了扩大点击事件的范围,代码里面的尺寸是在1600px设计图下的尺寸。

逻辑代码控制效果:

       TextView clerk_switch_tv = (TextView) view.findViewById(R.id.clerk_switch_tv);
       clerk_switch_tv.setSelected(!ShopUtil.checkStaffDisable(staff.staffId));
       clerk_switch_tv.setText(clerk_switch_tv.isSelected()
 ? getString(R.string.ClerkOnline) : getString(R.string.ClerkOffline));
       clerk_switch_tv.setGravity(clerk_switch_tv.isSelected() 
 ? Gravity.CENTER_VERTICAL | Gravity.LEFT : Gravity.CENTER_VERTICAL | Gravity.RIGHT);
                view.findViewById(R.id.clerk_switch_ll)
                .setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (clerk_switch_tv.isSelected()) {
                    clerk_switch_tv.setText(getString(R.string.ClerkOffline));
                    clerk_switch_tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);
                    clerk_switch_tv.setSelected(false);
                    ShopUtil.disableStaff(staff.staffId);
                    } else {
                    clerk_switch_tv.setText(getString(R.string.ClerkOnline));
                    clerk_switch_tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
                    clerk_switch_tv.setSelected(true);
                    ShopUtil.enableStaff(staff.staffId);
                    }
                }
            });

图片selector代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/switch_off" android:state_selected="false" />
    <item android:drawable="@drawable/switch_on" android:state_selected="true" />
</selector>

图片文件:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值