为什么ImageView 和TextView无法关闭

来源:8-4 作业题

CV工程师鱼

2018-03-05 01:49:45

package com.imooc.ui_project;

import java.security.PublicKey;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.ToggleButton;

public class MainActivity extends Activity {
	private int year,month,date,hour,minute,second,millisecond;
	private ToggleButton toggleButton;
	private RadioGroup radioGroup;
	private RadioButton rb01, rb02, rb03;
	private ImageView imageView;
	private TextView textView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ui);
		initView();
		textView.setText(setTime());
		
		toggleButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				if (toggleButton.isChecked()) {
					radioGroup.setVisibility(View.VISIBLE);
				} else {
					radioGroup.setVisibility(View.GONE);
					imageView.setVisibility(View.GONE);
	                                textView.setVisibility(View.GONE);
					radioGroup.clearCheck();
				}
			}
		});
	}

	private void initView() {
		toggleButton = (ToggleButton) findViewById(R.id.tb);
		radioGroup = (RadioGroup) findViewById(R.id.rg);
		rb01 = (RadioButton) findViewById(R.id.rb01);
		rb02 = (RadioButton) findViewById(R.id.rb02);
		rb02 = (RadioButton) findViewById(R.id.rb03);
		imageView = (ImageView) findViewById(R.id.iv);
		textView = (TextView) findViewById(R.id.tv);
		radioGroup.setOnCheckedChangeListener(new MyRadioButtonListener());
	}
	
	private String setTime(){
		Calendar calendar= Calendar.getInstance();
		year=calendar.get(calendar.YEAR);
		month=calendar.get(calendar.MONTH);
		date=calendar.get(calendar.DATE);
		hour=calendar.get(calendar.HOUR);
		minute=calendar.get(calendar.MINUTE);
		second=calendar.get(calendar.SECOND);
		millisecond=calendar.get(calendar.MILLISECOND);
		return "当前时间:"+year+"-"+month+"-"+date+"-"+hour+
				"-"+minute+"-"+second+"-"+millisecond;
		
	}

	class MyRadioButtonListener implements OnCheckedChangeListener {

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			switch (checkedId) {
			case R.id.rb01:
				imageView.setImageResource(R.drawable.office);
				break;
			case R.id.rb02:
				imageView.setImageResource(R.drawable.meeting);
				break;
			case R.id.rb03:
				imageView.setImageResource(R.drawable.visitor);
			}
			imageView.setVisibility(View.VISIBLE);
			textView.setVisibility(View.VISIBLE);
		}
	}
}


写回答

2回答

Polaris717

2018-10-12

toggleButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (toggleButton.isChecked()) {
                    radioGroup.setVisibility(View.VISIBLE);
                } else {
                    radioGroup.setVisibility(View.GONE);
                    imageView.setVisibility(View.GONE);
                                    textView.setVisibility(View.GONE);
                    radioGroup.clearCheck();
                }
            }
        });

这一段中, radioGroup.clearCheck(); 放在radioGroup之后,放在Imageview之前,可能因为radioButton还是选中的,imageView.setVisibility(View.GONE); textView.setVisibility(View.GONE);执行之后又被打开了,然后radioGroup.clearCheck();才执行

1
hrista23
回复
hq_慕的地7055958
h 执行clearCheck()系统会回调onCheckedChanged()使得设置的可见性无效
h019-01-28
共3条回复

CV工程师鱼

提问者

2018-03-05

http://img.mukewang.com/climg/5a9c32160001536a04650457.jpg

0
hV工程师鱼
回复
hrista23
h 好的,谢谢~~TAT
h018-03-05
共4条回复

0 学习 · 7235 问题

查看课程