一动态添加布局控件 1,创建控件,实例化容器 2,设置布局参数 3,容器添加控件 //创造出容器 linearLayout = (LinearLayout) findViewById(R.id.linearLayout_first); //创造控件赋予属性 Button button = new Button(this); button.setText(“按钮1”); button.setTextColor(getResources().getColor(R.color.colorAccent)); button.setTextSize(20.0f); //设置一个宽高尺寸(参数一代表宽度——》ViewGroup.LayoutParams.WRAP_CONTENT代码添加内容包裹属性, // 参数二代表高度——》ViewGroup.LayoutParams.WRAP_CONTENT代码添加内容包裹属性) LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); //将宽高设置到按钮上去 button.setLayoutParams(params);
//创建一个图片 ImageView imageView = new ImageView(this); //图片资源的引用 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ppg); imageView.setImageBitmap(bitmap); //将控件添加到容器中去 linearLayout.addView(button); linearLayout.addView(imageView);二 提示的文本输入框控件 1,得到数据源 2,建立适配器 3,设置控件的适配器 autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView); //创造数据源 String[] a = {“as”, “ss”, “assaa”, “sssss”, “QQWWE”, “EEEET”, “TTTTT”, “UUUUU”, “PPPPP”, “DD”, “DDDDFFGG”}; //叫适配器—-》将数据源和控件相互绑定创建的时候提供了三个参数(参数一:上下文,参数二:布局文件,参数三:数据源) ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, a); //设置输入多少个内容开始匹配 autoCompleteTextView.setThreshold(1); //在控件中设置适配器 autoCompleteTextView.setAdapter(adapter);
三 按钮点击事件的三种方法 按钮点击事件分为三种 * 1.匿名内部类(只有一个或者按钮的时候可以适用) * 步骤一:实例化按钮控件(获取这个控件的对象) * 步骤二:设置按钮的点击监听 btn.setOnClickListener(new View.OnClickListener() { * @Override * public void onClick(View view) { * //告知用户按钮点击生效 * Toast.makeText(MainActivity.this, “按钮被点击了”, Toast.LENGTH_SHORT).show(); * } * }); * * * * 2.实现点击监听的接口形式来设置我们的点击事件(多个按钮的时候可以适用) * 步骤一:implements View.OnClickListener (去实现Click点击事件的接口) * 步骤二:事件接口中的方法 * 步骤三:注册按钮的点击事件 ——>findViewById(R.id.btn).setOnClickListener(this); * 步骤四:获取用户点击按钮id来进行匹配(switch语句) * 步骤五:相应用户的点击事件 * * * * 3.在布局中定义一个属性(Onclick 给属性去一个名字)(无论一个还是多个都能适用)—-》你无法操作按钮的相关属性 * 你想代码改变按钮的背景,改变按钮的一些相关属性你必须有一个按钮的实例,对实例进行操作 * 步骤一:在java代码中写一个返回值为void的 方法(方法名要与定义属性的名字保持一致) * 步骤二:在此方法中去写按钮点击的相关逻辑代码 * */ 四 CheckBoxActivity setChecked() isChecked()
五,日期选择器 DatePickerAndTimePicker
new DatePickerDialog(DatePickerDialogActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int year, int month, int day) { SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”); Date date = new Date(year - 1900, month, day); TextView_Dialog.setText(format.format(date)); } }, year, month, day).show(); 六,TimePickerDialog 时间选择对话框
setContentView(R.layout.activity_time_picker_dialog); btn = (Button) findViewById(R.id.Btn_Click); textView = (TextView) findViewById(R.id.textView); Calendar calendar = Calendar.getInstance(); final int hour = calendar.get(Calendar.HOUR_OF_DAY); final int minte = calendar.get(Calendar.MINUTE);
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new TimePickerDialog(TimePickerDialogActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int i, int i1) { textView.setText("当前时间为" + i + ":" + i1); } }, hour, minte, true).show(); }七,Spinner
1,实例化控件 2,设置适配器 3,绑定适配器 setContentView(R.layout.activity_spinner_simple_recource); mSpinner = (Spinner) findViewById(R.id.Spinner_Show); //ArrayAdapter 的创造除了new 出来以外还可以通过ArrayAdapter.createFromResource 来构建ArraryAdapter //有三个参数(参数一:代表上下文,参数二:数据源,参数三:布局文件—-》系统提供) ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.Spinner,android.R.layout.simple_spinner_dropdown_item); //控件加载适配器 mSpinner.setAdapter(adapter); 八,ScrollView 只允许包含一个内容 九,Spinner的item条目展示多种控件 private SimpleAdapter adpter;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner_simple_adapter); mSpinner = (Spinner) findViewById(R.id.Spinner_showImage); //获取数据源 getMessage(); //叫适配器(参数一:上下文,参数二:数据源,参数三:布局,参数四:String类型数组----》HashMap的剑,参数五:控件的id) adpter = new SimpleAdapter(this,list,R.layout.item,new String[]{"name","image"},new int[]{R.id.textView_item,R.id.image_item}); mSpinner.setAdapter(adpter); } public void getMessage() { list = new ArrayList<>(); for (int i = 0; i < 7; i++) { HashMap map = new HashMap(); map.put("name","张三"+i); map.put("image",image[i]); list.add(map); } }十,RadioButton
/** * 单选按钮用点击单选按钮,展示按钮的内容到文本控件上面去 *
* 1.实例化控件 *
* 2.设置RadioGroup的点击事件的监听 *
* 3.从点击监听中获取radiobutton的id,从而获取radiobutton的文本内容 */
public class RadioButtonActivity extends AppCompatActivity { private RadioGroup radioGroup; private TextView textView;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio_button); init(); //设置RadioGroup的点击事件的监听事件 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { //获取radiobutton的id int id = radioGroup.getCheckedRadioButtonId(); //获取到radioButton的实例 RadioButton radioButton = (RadioButton) findViewById(id); //获取radiobutton上面的名字 String name = radioButton.getText().toString(); //将名字设置到TextView上面去 textView.setText(name); } }); } private void init() { radioGroup = (RadioGroup) findViewById(R.id.radioGroup_Check); textView = (TextView) findViewById(R.id.textView_name); }}
十一 Spinner的二级联动效果 /** * Spinner的二级联动效果 * 步骤1:在String 资源中创建数据源 * 步骤2:实例化控件 * 步骤3:设置一级目录内容——–》用适配器加载(获取数据源) * 步骤4:根据一级目录的位置来决定二级目录显示的内容(二级目录用适配器加载,获取数据源) */
public class LinkageSpinnerActivity extends AppCompatActivity { private Spinner spinner_first, spinner_second; //定义数组用来承载二级列表所有的数据 private int arrs[] = {R.array.fruit, R.array.computerLanguage, R.array.City};
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_linkage_spinner); init(); //此法用实现二级联动相关逻辑 getMessage(); } private void init() { spinner_first = (Spinner) findViewById(R.id.Spinner_first); spinner_second = (Spinner) findViewById(R.id.Spinner_second); } public void getMessage() { //设置适配器 final ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.Type, android.R.layout.simple_spinner_dropdown_item); //控件加载适配器 spinner_first.setAdapter(adapter); //spinner控件的监听 spinner_first.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { //通过用户指定的位置来判断二级目录所要加载的内容 ArrayAdapter adaters = ArrayAdapter.createFromResource(LinkageSpinnerActivity.this, arrs[position], android.R.layout.simple_spinner_dropdown_item); spinner_second.setAdapter(adaters); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); }十二 文本编辑框 public class EditTextActivity extends AppCompatActivity {
private Button btn; private EditText editText_Input; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_text); //实例化控件的方法 init(); editText_Input.addTextChangedListener(new TextWatcher() { //文本改变之前的状态 @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } //文本正在改变的状态 @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (editText_Input.length() > 5) { btn.setBackground(getResources().getDrawable(R.drawable.background_second)); } else { btn.setBackground(getResources().getDrawable(R.drawable.background_first)); } } //文本改变之后的状态 @Override public void afterTextChanged(Editable editable) { } }); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //参数二是获取editText输入框中的内容 Toast.makeText(EditTextActivity.this, editText_Input.getText().toString(), Toast.LENGTH_SHORT).show(); } }); } private void init() { btn = (Button) findViewById(R.id.btn); editText_Input = (EditText) findViewById(R.id.editText_Input); }