android: padding="10dp" 就是离所有边框有10个距离
android: background 背景
图片资源需要存在drawable-xhdpi文件夹,而这个文件夹是要自己新建的
android-orientation: vertical和horizontal 表明是垂直排列还是水平排列
match-parent就是和屏幕一样大,wrap-content就是字有多大,就多大,下面会有一个横线
linerlayout是线性布局,就是从上往下
relativelayout就是相对布局 需要加layoutbelow: @xx_id/tv_1
还有一种布局就是ScrollView,这种布局就是能够上下或者左右滑动的布局,取决于android:orientation是哪种?
布局可以嵌套,比如
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="110dp"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:src="@drawable/head" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:orientation="vertical">
如果想要显示文字 那么就用TextView:
<TextView
android:id="@+id/finish_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="头衔"
android:textSize="16sp"/>
想显示图片,请参考
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:src="@drawable/head" />
如果想定义按钮,参考
<Button
android:id="@+id/btn_login"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="登录"
android:gravity="center"
android:background="@drawable/btn_left"
/>
如果想定义输入框:
<EditText
android:id="@+id/et_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="密码"
android:maxLines="1"
android:padding="5dp"
android:textColor="@color/black"
android:textSize="16sp"
android:inputType="textPassword"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="210dp"
></EditText>
针对上面的Button和EditText,需要在Activity里面先通过findViewById找到对应的View,而且button需要覆写onClick方法:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtnLogin;
private EditText mEtUser;
private EditText mEtPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到控件
mBtnLogin = findViewById(R.id.btn_login);
mEtUser = findViewById(R.id.et_1);
mEtPassword = findViewById(R.id.et_2);
mBtnLogin.setOnClickListener(this);
}
public void onClick(View view) {
String ok = "登陆成功";
String fail = "账号或者密码错误";
Intent intent = null;
Toast.makeText(getApplicationContext(), ok, Toast.LENGTH_SHORT).show();
ToastUtil.showMsg(MainActivity.this, ok);
intent = new Intent(MainActivity.this, SlideActivity.class);
startActivity(intent);
}
}
如果一个界面有多个button,可以参考下面的写法:
public class SlideActivity extends AppCompatActivity {
private ImageView mIvHead;
private SlideMenu slideMenu;
private Button buttonStudy;
private Button buttonPlay;
private Button buttonExercise;
private Button buttonRead;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_slide);
mIvHead = findViewById(R.id.iv_head);
slideMenu = findViewById(R.id.slideMenu);
buttonStudy = findViewById(R.id.btn_1);
buttonPlay = findViewById(R.id.btn_2);
buttonExercise = findViewById(R.id.btn_3);
buttonRead = findViewById(R.id.btn_4);
mIvHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
slideMenu.switchMenu();
}
});
setListener();
}
private void setListener() {
Onclick onclick = new Onclick();
buttonStudy.setOnClickListener(onclick);
buttonPlay.setOnClickListener(onclick);
buttonExercise.setOnClickListener(onclick);
buttonRead.setOnClickListener(onclick);
}
private class Onclick implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.btn_1:
intent = new Intent(SlideActivity.this, StudyActivity.class);
break;
case R.id.btn_2:
intent = new Intent(SlideActivity.this, PlayActivity.class);
break;
case R.id.btn_3:
intent = new Intent(SlideActivity.this, ExerciseActivity.class);
break;
case R.id.btn_4:
intent = new Intent(SlideActivity.this, ReadActivity.class);
break;
}
startActivity(intent);
}
}
}
如果想添加单选框:
<RadioGroup
android:id="@+id/rg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_marginTop="20dp">
<RadioButton
android:id="@+id/rb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="健身"
android:textColor="@color/black"
android:gravity="center"
android:textSize="20sp"
android:checked="true"/>
<RadioButton
android:id="@+id/rb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跑步"
android:textColor="@color/black"
android:gravity="center"
android:textSize="20sp"/>
<RadioButton
android:id="@+id/rb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳舞"
android:textColor="@color/black"
android:gravity="center"
android:textSize="20sp"/>
</RadioGroup>
如果想定义复选框:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="你今天中午吃什么"
android:textColor="@color/black"
android:layout_marginTop="20dp"
android:textSize="20sp" />
<CheckBox
android:id="@+id/cb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="火锅"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"/>
<CheckBox
android:id="@+id/cb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="串串"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"/>
<CheckBox
android:id="@+id/cb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="砂锅"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"/>
</LinearLayout>
不过单选框和复选框也是要先调用findViewById的, 而且复选框需要覆写onCheckedChanged方法:
public class StudyActivity extends AppCompatActivity {
private RadioGroup mRG1;
private CheckBox mCB1;
private CheckBox mCB2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_study);
mRG1 = findViewById(R.id.rg_1);
mCB1 = findViewById(R.id.cb_1);
mCB2 = findViewById(R.id.cb_2);
mRG1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton radioButton = radioGroup.findViewById(i);
Toast.makeText(StudyActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show();
}
});
mCB1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Toast.makeText(StudyActivity.this, b?"选中":"未选中", Toast.LENGTH_SHORT).show();
}
});
}
}
Toast用来在用户点击的时候,弹出一些提示信息
Toast.makeText(StudyActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show()
比如用户在选择跑步的时候,下方弹出一个跑步的提示框,停留1秒左右消失
ScrollView,是可以滑动的view,以防一个屏幕装不下,里面只能放置一个控件,
textColor可以在values包的colors.xml写,text的值可以再包里的string.xml里面写
android:gravity="center" 居中