选择菜单,弹出子菜单,点击选项跳转到新Activity
SubMenu prog = menu.addSubMenu("启动程序");
prog.setHeaderTitle("选择要启动的程序");
MenuItem item = prog .add("设置");
item.setIntent(new Intent(this,SetActivity.class));
return super.onCreateOptionsMenu(menu);
直接弹出选项,点击选项跳转到新Activity
// SubMenu prog = menu.addSubMenu("启动程序");
// prog.setHeaderTitle("选择要启动的程序");
MenuItem item = menu.add("设置");
item.setIntent(new Intent(this,SetActivity.class));
return super.onCreateOptionsMenu(menu);
不同Switch状态的toast显示
Switch wlan=(Switch)super.findViewById(R.id.switch2);
/*因为Switch组件继承自CompoundButton,在代码中可以通过实现CompoundButton.OnCheckedChangeListener接口,并
实现其内部类的onCheckedChanged来监听状态变化。*/
wlan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
Toast.makeText(getApplicationContext(), "开", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), "关", Toast.LENGTH_SHORT).show();
}
});
弹出菜单
public void tac()
{
AlertDialog.Builder jk = new AlertDialog.Builder(this);
jk.setMessage("弹出");
jk.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterfa ce, int i) {
Toast.makeText(getApplicationContext(), "弹出菜单点击了确定", Toast.LENGTH_SHORT).show();
}
});
jk.setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(), "弹出菜单点击了取消", Toast.LENGTH_SHORT).show();
}
});
jk.create();
jk.show();
}
添加列表项
ListView mylist = (ListView)super.findViewById(R.id.listView);
BaseAdapter baseAdapter = new BaseAdapter() {
@Override
public int getCount() {
return 40;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
LinearLayout linearLayout = new LinearLayout(TextActivity.this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
ImageView imageView = new ImageView(TextActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
TextView textView = new TextView(TextActivity.this);
textView.setText("第"+(i+1)+"列表项");
textView.setTextSize(20);
textView.setTextColor(Color.BLUE);
linearLayout.addView(imageView);
linearLayout.addView(textView);
return linearLayout;
}
};
mylist.setAdapter(baseAdapter);
底部向上弹出提示
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
不在MENU中跳转Activity
Intent intent=new Intent(this,SetActivity.class);
startActivity(intent);
隐藏ActionBar
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
限制字符显示的长度,并在字符后加省略号
文字过长显示省略号或者跑马灯效果
android:maxEms="6" //限制显示的字符长度
android:singleLine="true" //单行显示
android:ellipsize="end"//在结尾用省略号
TextView相关属性设置
android:maxLines 设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines 设置文本的最小行数,与lines类似。
android:linksClickable 设置链接是否点击连接,即使设置了autoLink。
android:scrollHorizontally 设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:textSize 设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle 设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface 设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
android:height 设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight 设置文本区域的最大高度
android:minHeight 设置文本区域的最小高度
android:minHeight 设置文本区域的最小高度
android:width 设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
android:maxWidth 设置文本区域的最大宽度
android:minWidth 设置文本区域的最小宽度
match_parent和wrap_parent
/match_parent/: match—->使等同于,parent—->父母,所以,可以从单词上去理解,它就是强制性的使它的大小等同于父控件,父控件多大,他就多大。
/wrap_content/: wrap—->包(着),content—->内容,单词意思上去理解,这个属性就是让这个属性包着内容,转译过来,就是使这个属性和内容的大小刚好。
include的作用
使用<include>可以在多个界面复用一个布局
官方文档说:如果想在 include 标签中使用 layout属性,那么必须得在include 中包含 android:layout_height 和 android:layout_width,否则其它layout 属性 不会生效!
LinearLayout属性
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思。
android:layout_gravity 和 android:gravity 的区别
从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。
android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置。
比如说button:android:layout_gravity 表示按钮在界面上的位置。 android:gravity表示button上的字在button上的位置。
Spinner使用
android:entries="@array/citys"
citys是一个array,在values下的一个.xml文件中定义的
使用array,不是arrays,不是.xml文件的名,只是array而已
多个Spinner联动
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
第二个参数是Spinner未展开菜单时Spinner的默认样式,android.R.layout.simple_spinner_item是系统自带的内置布局。
sppro = (Spinner)super.findViewById(R.id.spinner);
spcity = (Spinner)super.findViewById(R.id.spinner2);
String[] proItems = getResources().getStringArray(R.array.pro);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,proItems);
// = ArrayAdapter.createFromResource(DisplayActivity.this,R.array.pro,R.layout.support_simple_spinner_dropdown_item);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
sppro.setAdapter(arrayAdapter);
sppro.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Spinner spinner = (Spinner)adapterView;
String prostr = (String)spinner.getItemAtPosition(i);
ArrayAdapter<CharSequence> cityadapter =
ArrayAdapter.createFromResource(DisplayActivity.this,R.array.shangdong,R.layout.support_simple_spinner_dropdown_item);
if(prostr.equals("山东省"))
{
cityadapter = ArrayAdapter.createFromResource(DisplayActivity.this,R.array.shangdong,R.layout.support_simple_spinner_dropdown_item);
Toast.makeText(getApplicationContext(), "选择了山东省", Toast.LENGTH_SHORT).show();
}
else if(prostr.equals("河北省"))
{
Toast.makeText(getApplicationContext(), "选择了河北省", Toast.LENGTH_SHORT).show();
}
spcity.setAdapter(cityadapter);//重要的一步,不要忘了
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
主题
<color name="colorPrimary">#3F51B5</color> //ActionBar的颜色
<color name="colorPrimaryDark">#303f9f</color> //ActionBar上面状态栏的颜色
<color name="colorAccent">#ff4081</color>
修改RadioGroup的纵横布局
android:orientation="horizontal"
弹出日期选择窗口
final TextView datepickedit = (TextView)super.findViewById(R.id.datetextview);
//final EditText datepickedit = (EditText)super.findViewById(R.id.datepickedit);
datepickedit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendardate = Calendar.getInstance();
DatePickerDialog datePicker = new DatePickerDialog(DisplayActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int date) {
calendardate.set(year,month,date);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//转型
Toast.makeText(getApplicationContext(), format.format(calendardate.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendardate.getTime()));
}
},calendardate.get(Calendar.YEAR),calendardate.get(Calendar.MONTH),calendardate.get(Calendar.DAY_OF_MONTH));
datePicker.show();
}
});
弹出时间选择窗口
TextView timetextview1 = (TextView)super.findViewById(R.id.timetextview1);
TextView timetextview2 = (TextView)super.findViewById(R.id.timetextview2);
timetextview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendartime1 = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(DisplayActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
calendartime1.set(Calendar.HOUR_OF_DAY,i);
calendartime1.set(Calendar.MINUTE,i1);
SimpleDateFormat format = new SimpleDateFormat("hh-mm");//转型
Toast.makeText(getApplicationContext(), format.format(calendartime1.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendartime1.getTime()));
}
},calendartime1.get(Calendar.HOUR_OF_DAY),calendartime1.get(Calendar.MINUTE),true);
timePickerDialog.show();
}
});
timetextview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendartime1 = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(DisplayActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
calendartime1.set(Calendar.HOUR_OF_DAY,i);
calendartime1.set(Calendar.MINUTE,i1);
SimpleDateFormat format = new SimpleDateFormat("hh-mm");//转型
Toast.makeText(getApplicationContext(), format.format(calendartime1.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendartime1.getTime()));
}
},calendartime1.get(Calendar.HOUR_OF_DAY),calendartime1.get(Calendar.MINUTE),true);
timePickerDialog.show();
}
});
检查文本框是否为空
EditText nameedit = (EditText)DisplayActivity.super.findViewById(R.id.nameedit);
String name = nameedit.getText().toString();
if(TextUtils.isEmpty(nameedit.getText()))
{
Snackbar.make(view, "姓名不能为空", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}