Android界面开发
界面布局
LinearLayout(线性布局)
XML属性 | 相关方法 | 说 明 |
---|---|---|
Android:orientation | SetOrientation(int) | 设置布局内组件的排列方式,可以设置为horizontal(水平排列)、vertical(垂直排列、默认值)两个值的其中之一 |
Android:gravity | setGravity(int) | 设置布局内组件的对齐方式,可选值包括top、bottom、left、right、center_vertical、fill_vertical、center_horizonal、fill_horizontal、center、fill、clip_vertical和clip_horizontal.这些属性值可以同时指定,各属性之间用竖线隔开。如要指定组件靠左下角对齐,可以用left|botton |
FrameLayout(框架布局)
框架布局是组织视图控件最简单和最有效地布局之一。该布局一般只用来显示单视图或者层叠的多视图。
XML属性 | 相关方法 | 说 明 |
---|---|---|
Android:foreground | SetForeground(Drawable) | 设置框架布局视窗的前景图像 |
Android:foregroundGravity | SetForegroundGravity(int) | 定义绘制前景图像的gravity属性 |
TableLayout(表格布局)
表格布局中每一个TableRow对象或者View对象为一行。TableRow是一个容器,因此可以向TableRow中添加子控件,每添加一个子控件该表格就增加一列。
XML属性 | 相关方法 | 说 明 |
---|---|---|
Android:collapseColumns | SetColumnCollapsed(int,boolean) | 设置需要被隐藏的列的列序号(序号从0开始),多个列序号之间用逗号“,”分隔。 |
Android:shrinkColumns | setShrinkAllColumns(boolean) | 设置允许被收缩的列的列序号(序号从0开始),多个列序号之间用逗号“,”分隔。 |
Android:stretchColumns | setStretchAllColumns (boolean) | 设置允许被拉伸的列的列序号(序号从0开始),多个列序号之间用逗号“,”分隔。 |
GridLayout(网格布局)
RelativeLayout(相对布局)
AbsoluteLayout(绝对布局)
界面控件
TextView 和 EditText
TextView只用于显示文本,EditText可编辑文本
CheckBox 和 RadioButton
添加RadioButton
添加之前要先设至一个RadioGroup,设置为一组,这样才能单选
package com.example.sx5_2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button button = null;
String Name = "";
String Password = "";
String gender = "";
String Hobby = "";
String Country = "";
String City = "";
// Spinner Countries,citites;
String[] countryItem;
String[] cityItem;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Spinner
Spinner Countries = (Spinner)findViewById(R.id.spinner);
Spinner Cities = (Spinner)findViewById(R.id.spinner2);
//绑定注册按钮
button = (Button)findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText name = (EditText)findViewById(R.id.editTextTextMultiLine2);
Name = "姓名:" + name.getText().toString() +"\n";
EditText password = (EditText)findViewById(R.id.editTextTextMultiLine3);
Password = "密码:" + password.getText().toString() + "\n";
//根据ID找到RadioGroup实例
RadioGroup group = (RadioGroup)findViewById(R.id.radiogroup);
//绑定一个匿名监听器
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
//获取变更后的选中项的ID
int radioButtonId = group.getCheckedRadioButtonId();
//根据ID获取RadioButton的实例
RadioButton radiobutton = (RadioButton)MainActivity.this.findViewById(radioButtonId);
//更新文本内容,已符合选中项
gender = "你的性别是:" + (String)radiobutton.getText() + "; ";
}
});
Hobby = "体育爱好:";
CheckBox checkbox1 = (CheckBox)findViewById(R.id.checkBox1);
CheckBox checkbox2 = (CheckBox)findViewById(R.id.checkBox2);
CheckBox checkbox3 = (CheckBox)findViewById(R.id.checkBox3);
CheckBox checkbox4 = (CheckBox)findViewById(R.id.checkBox4);
//对选项进行确定
if(checkbox1.isChecked()){
Hobby = Hobby + checkbox1.getText()+" ";
}
if(checkbox2.isChecked()){
Hobby = Hobby + checkbox2.getText()+" ";
}
if(checkbox3.isChecked()){
Hobby = Hobby + checkbox3.getText()+" ";
}
if(checkbox4.isChecked()){
Hobby = Hobby + checkbox4.getText()+" ";
}
DisplayToast(Name + Password + Country + City + gender + Hobby);
}
});
Countries = findViewById(R.id.spinner);
//获取array中定义的值
countryItem = getResources().getStringArray(R.array.countries);
//添加Spinner监听事件
Countries.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Country = "国籍:" + countryItem[position] + "\n";
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
Cities = findViewById(R.id.spinner2);
//获取array中定义的值
cityItem = getResources().getStringArray(R.array.cities);
//添加Spinner监听事件
Cities.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
City = "城市:" + cityItem[position] + "\n";
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void DisplayToast(String str){
Toast.makeText(this,str,Toast.LENGTH_LONG).show();
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main,menu);
return true;
}
}Spinner
添加Spinner组件,有两种方法,一种是在java代码中实现,一种是在xml中实现。对我来说肯定选择后者,方便快捷而且不会混乱。但要在res文件夹中values文件夹中创建两个xml文件,用来存放string数组,这个数组就是spinner的下拉item。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries">
<item>中国</item>
<item>日本</item>
<item>美国</item>
</string-array>
</resources> 同时在spinner的xml代码中,要添加以下代码,类似spinner引用该数组。android:entries=”@array/countries”
<Spinner
android:id="@+id/spinner"
android:layout_width="409dp"
android:layout_height="80dp"
android:entries="@array/countries"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="228dp" />
事件处理
匿名内部类作为监听器类
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(OtherActivity.this,MainActivity.class);
OtherActivity.this.startActivity(intent);
OtherActivity.this.finish();
}
});内部类作为事件监听器类
//内部类,放在Acitvity类中
class MyClickListener implements View.OnClickListener{
public void onClick(View v){
DisplayToast("事件触发器");
}
}外部类作为事件监听器类
//新建一个MyClickListner类作为外部类
public class MyClickListener implements OnClickListener{
...
}
//MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
Button button = (Button)findViewById(R.id.XXX);
button.setOnClickListener(new MyClickLister(this));
}Activity本身作为事件监听类
public class MainActivity extends AppCompatActivity implements OnClickListner{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//此时按钮响应事件就要改变了
public void onClick(View v){
DisplayToast("事件触发成功");
}
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 修心的小屋!
评论