两个布局
线性布局(LinearLayout)
相对布局(RelativeLayout)
常用的属性(LinearLayout)
android:id ----------------> 标识
android:layout_ margin---->外边距
android:layout_ width----->宽度
android:layout_width="match_parent" // 匹配父文件
android:layout_height="wrap_content" //包含内容
android:layout_ padding---->内边距
android:layout_ height—>高度
android:orientation-------->方向,水平(vertical),垂直(horizontal)
android:background------->背景
android:gravity=“center”> ---->对齐方式
android:layout_weight=“1”------>权重(平分空间用)
<LinearLayout
android:id="@+id/ll_1"
android:layout_width="200dp"
android:layout_height="200dp"
android:orientation="vertical"
android:background="#000"
android:padding="20dp"
>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0033"/>
LinearLayout>
<LinearLayout
android:layout_width="300dp"
android:layout_height="200dp"
android:orientation="horizontal"
android:background="#0066FF"
android:layout_marginTop="20dp">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#ffff"
android:layout_weight="1"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#FF0033"
android:layout_weight="1"/>
LinearLayout>
常用的属性(RelativeLayout)
线性布局的属性他都有
android:layout_ toLeftOf
android:layout_ below
android:layout_ toRightOf
android:layout_toRightOf="@+id/view_1"
android:layout_ alignBottom
android:layout_ alignParentBottom ---->相对与父元素的底部对齐
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<view
android:id="@+id/view_1"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#000"
/>
<view
android:id="@+id/view_2"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#FF0033"
android:layout_below="@+id/view_1"
android:padding="15dp"
/>
<LinearLayout
android:id="@+id/ll_1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@id/view_2"
android:background="#0066FF"
android:padding="15dp"
android:orientation="horizontal">
<view
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#ff00"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:padding="15dp">
<view
android:layout_width="100dp"
android:layout_height="match_parent"/>
RelativeLayout>
LinearLayout>
RelativeLayout>
◆文字大小、 颜色
◆显示不下使用…
◆文字+ icon
◆中划线、下划线
◆跑马灯
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hahah..."
android:textColor="#ff00"
android:textSize="24sp"/>
<TextView
android:id="@+id/tv_2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="显示不下使用"
android:maxLines="1"
android:ellipsize="end"
android:textColor="#ff00"
android:textSize="24sp"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tv_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文字+ icon"
android:drawablePadding="5dp"
android:textColor="#000"
android:textSize="24sp"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tv_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中划线(java代码实现)"
android:textColor="#000"
android:textSize="24sp"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tv_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="横线下"
android:textColor="#ff00"
android:textSize="24sp"/>
LinearLayout>
package tianmei.weiyai.com.helloword;
import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class TextViewActivity extends Activity {
private TextView mtv4;
private TextView mtv5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//
//找到ui组件
mtv4 = findViewById(R.id.tv_4);
mtv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//中划线
mtv4.getPaint().setAntiAlias(true); //去除锯齿
//找到ui组件
mtv5 = findViewById(R.id.tv_5);
mtv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gVNwl6iE-1592988428642)(C:\Users\17923\AppData\Roaming\Typora\typora-user-images\image-20200623215441025.png)]
<TextView
android:id="@+id/tv_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="如果王海洋是女生,啥都别说都是他的阿U币车速表从"
android:singleLine="true"
android:textColor="#000"
android:textSize="24sp"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"/>
文字大小、颜色
自定义背景形状
自定义按压效果
点击事件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp">
<Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮1"
android:textSize="20sp"
android:textColor="#000"
android:background="#f00"/>
<Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮2"
android:textSize="20sp"
android:textColor="#ffff"
android:background="@drawable/bg_btn2"
android:layout_below="@+id/btn_1"
android:layout_marginTop="15dp"/>
RelativeLayout>
package tianmei.weiyai.com.helloword;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ButtonActivity extends Activity {
private Button mBtn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
//获取id
mBtn1 = (Button) findViewById(R.id.btn_1);a
//注册点击事件
mBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this,"我被点击了",Toast.LENGTH_LONG).show();
}
});
}
public void showToast(View view){
Toast.makeText(this,"我被点击了",Toast.LENGTH_LONG).show();
}
}
◆常用属性
◆监听事件
◆制作登录界面
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp">
<EditText
android:id="@+id/et_1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="用户名"
android:textSize="16sp"
android:textColor="#F00"
android:layout_marginTop="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:maxLines="1"
/>
<EditText
android:id="@+id/et_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="16sp"
android:textColor="#f00"
android:hint="密码"
android:background="@drawable/bg_btn3"
android:layout_below="@id/et_1"
android:layout_marginTop="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:maxLines="1"/>
<Button
android:id="@+id/btn_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登陆"
android:background="@drawable/bg_btn2"
android:layout_below="@id/et_2"
android:layout_marginTop="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
/>
RelativeLayout>
package tianmei.weiyai.com.helloword;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class EditTextActivity extends Activity {
private Button mBtnLogin;
private EditText mEditUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_text);
mBtnLogin = findViewById(R.id.btn_5);
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EditTextActivity.this,"登陆成功",Toast.LENGTH_SHORT).show();
}
});
mEditUsername = findViewById(R.id.et_1);
//text的监听改变事件
mEditUsername.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("edittext",s.toString());//在控制台实时打印
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
android:checked=“true” ---->默认勾选
android:button="@null"—>去掉前面的圈圈
//找到id对应的组件
mBtnTextView2 = findViewById(R.id.btn_edittext);
mBtnTextView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳转到改页面
Intent intent = new Intent(MainActivity.this,EditTextActivity.class);
startActivity(intent);
}
});
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/rg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/rb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"
android:textSize="18sp"
android:textColor="#00f"/>
<RadioButton
android:id="@+id/rb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="18sp"
android:textColor="#00f"/>
RadioGroup>
RelativeLayout>
常用属性
自定义样式
监听事件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CheckBoxActivity"
android:padding="15dp">
<TextView
android:id="@+id/tv_title"
android:text="我啥也不会啊"
android:textSize="20sp"
android:textColor="#000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"/>
<CheckBox
android:id="@+id/cb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="李玉森"
android:textSize="20sp"
android:layout_below="@+id/tv_title"/>
<CheckBox
android:id="@+id/cb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="吴志伟"
android:textSize="20sp"
android:layout_below="@+id/cb_1"/>
<CheckBox
android:id="@+id/cb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="王海洋"
android:textSize="20sp"
android:layout_below="@+id/cb_2"/>
RelativeLayout>
android:scaleType 缩放效果
◆ fitXY :撑满控件,宽高比可能发生改变
◆ fitCenter :保持宽高比缩放,直至能够完全显示
◆ centerCrop :保持宽高比缩放,直至完全覆盖控件,裁剪显示
<ImageView
android:layout_width="300dp"
android:layout_height="200dp"
android:background="#0f0"
android:src="这是个图片组件(放图片)"
android:layout_below="@id/cb_3"
android:layout_marginTop="20dp"/>
常用属性
Adapter接口
Demo演示