为什么我的ToggleButton在点击第3下时才能正常使用?谢谢

为什么我的ToggleButton在点击第3下时才能正常使用?谢谢

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="无限局域网络"/>
        <ToggleButton
            android:id="@+id/tb"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textOff="关闭WiFi"
            android:textOn="打开WiFi"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/layout01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioGroup
            android:id="@+id/radioGroup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <RadioButton
                android:id="@+id/btn_offic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="imooc-offic"/>
            <RadioButton
                android:id="@+id/btn_meeting"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="imooc-meeting"/>
            <RadioButton
                android:id="@+id/btn_vistor"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="imooc-vistor"/>
        </RadioGroup>
        <LinearLayout
            android:id="@+id/layout02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/imageview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/office"/>
            <TextView
                android:id="@+id/showTime"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>

    </LinearLayout>

</LinearLayout>
package com.example.jackson.ui_design;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    private ToggleButton toggleButton;
    private RadioGroup radioGroup;
    private RadioButton rb_office,rb_meeting,rb_visitor;
    private ImageView imageView;
    private TextView textView;
    private LinearLayout layout01,layout02;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        //初始化
        initView();
        //控件绑定监听器
        bandListener();
    }
    private void initView(){
        toggleButton = (ToggleButton)findViewById(R.id.tb);
        radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
        rb_office = (RadioButton)findViewById(R.id.btn_offic);
        rb_meeting = (RadioButton)findViewById(R.id.btn_meeting);
        rb_visitor = (RadioButton)findViewById(R.id.btn_vistor);
        imageView = (ImageView)findViewById(R.id.imageview);
        textView = (TextView)findViewById(R.id.showTime);
        layout01 = (LinearLayout)findViewById(R.id.layout01);
        layout02 = (LinearLayout)findViewById(R.id.layout02);
    }
    private  void bandListener(){
        ButtononClickLisenter buttononClickLisenter = new ButtononClickLisenter();
        toggleButton.setOnClickListener(buttononClickLisenter);
    }
    class ButtononClickLisenter implements View.OnClickListener{
        public void onClick(View v){
            //当ToogleButton被触发时
            if(toggleButton.isChecked()){
                layout01.setVisibility(View.VISIBLE);
            }else{
                layout01.setVisibility(View.GONE);

            }
        }
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

并不是没有效果,而是因为你初始状态的问题,要不你可以试一下ButtononClickLisenter 中是否每次都走到了if或else。肯定是走到了的。原因是<ToggleButton>增一个属性   android:checked="true"就看到效果了。或者你让layout01默认为不可见也行。祝:学习愉快

  • 宝慕林7867458 提问者 #1
    添加android:checked="true"之后,初始状态在没选中RadioButton时,图片会出现
    2018-01-05 14:00:10
  • 好帮手慕雪 回复 提问者 宝慕林7867458 #2
    先图片默认不可见就行了。或者你不增加android:checked属性,设置 layout01默认为不可见也行
    2018-01-05 14:15:31
金鱼家 2018-03-11 11:47:34

我ToggleButton使用的是OnClickChangeListener监听,这样的话复写的按钮状态改变触发的函数中会传进一个显示当前按钮状态的参数,就很方便了~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师