Android - 触发事件后呈现窗口小部件

时间:2016-03-09 01:13:29

标签: java android

在android中,如何在事件发生后渲染窗口小部件。在这种情况下,事件可以是按下的单选按钮。按下渲染按钮后,屏幕上将呈现另一个窗口小部件(如文本视图或编辑框)。

依赖于事件的小部件,当前是在android layout xml文件中编写的。代码如下所示:

        case R.id.radio_buttonID:
            if(Checked) {

                EditText  Enter_Info = (EditText) findViewById(R.id.Enter_boxID);
                TextView  Display_Text = (TextView) findViewById(R.id.Sign_ID);
                percentSign.setText(R.string.Word);
            }
            break;

以上是switch语句的一部分,该语句位于处理单选按钮的函数中。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

此示例代码将让您了解您计划实现的目标。您可以根据需要进行修改。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;

public class Main2Activity extends AppCompatActivity {

private EditText Enter_Info;
private RadioButton radioButton;

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

    Enter_Info = (EditText) findViewById(R.id.Enter_boxID);
    Enter_Info.setVisibility(View.GONE);

    radioButton = (RadioButton)findViewById(R.id.my_radio_button);
    radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                Enter_Info.setVisibility(View.VISIBLE); 
            }else{
                Enter_Info.setVisibility(View.GONE);
            }
        }
    });

   }
}

答案 1 :(得分:0)

继续前进并发布我所做的代码,遵循您使用的相同onClick代码模式,如果有人很难理解 setOnCheckedChangeListener 图案。

  

MainActivity

public class MainActivity extends AppCompatActivity {

    private TextView tvSample;
    private RadioButton rbSample;

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

        initViews();
    }

    private void initViews() {
        tvSample = (TextView) findViewById(R.id.tv_sample);
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.rb_sample:
                rbSample = (RadioButton) findViewById(v.getId());
                if (rbSample.isChecked()) {
                    tvSample.setVisibility(View.VISIBLE);

                }
                break;
        }
    }
}
  

activity_main.xml中

<?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="horizontal">

    <RadioButton
        android:id="@+id/rb_sample"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:padding="2dp"
        android:text="Sample Radio Button" />

    <TextView
        android:id="@+id/tv_sample"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Sample Text"
        android:visibility="gone" />

</LinearLayout>

您可以在xml布局中替换想要出现在RadioButton旁边的View(TextView / EditText),只需先将VISIBILITY设置为GONE,然后在检查时将其动态设置为VISIBLE。如果你希望RadioButton在被检查后消失,只需将VISIBILITY设置为GONE动态。有关View元素的更多信息,您可以访问官方Android开发者网站 - View | Android Developers