文章目录
下篇: https://blog.csdn.net/wang342626/article/details/87917342
Android studio安装步骤
https://blog.csdn.net/siwuxie095/article/details/53431818
真机运行步骤
Android Studio 使用USB真机调试教程教程:
https://blog.csdn.net/fubo1990/article/details/79798328
no target device found 问题解决链接:
https://blog.csdn.net/aaa1050070637/article/details/82146281
一.LinearLayout线性布局
//宽度高度单位使用dp,不是px. 字体使用sp单位
layout_width:match_parent 和父亲一样宽
gravity:center ...//内部元素排列方式
View是所有其他的父类
均分宽度
使用weight
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#00FF00"
android:layout_marginTop="10dp"
<view
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"> //均分宽度
</view>
<view
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#FF0000"
android:layout_weight="1">
</view>
</LinearLayout>
weight权重,减掉占用的,剩下的平分
二. RelativeLayout 相对布局
android:layout_alignParentBottom="true" //靠近父亲的底部对
android:layout_toRightOf="@+id/view_1"> // 靠view_1的右边
android:layout_below="@id/view_1"> // 放view_1的下边
更多 https://www.cnblogs.com/tinyphp/p/3787994.html
三: TextView
新手全部流程:
- 打开app->src->main->res->layout->activity_main.xml 写入代码
<!--创建一个Button-->
<Button
android:id="@+id/btn_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"/>
- 打开app->src->main->java->com.*.myApplication->MainActivity.java写入代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
//有的人使用的是 extends AppCompatActivity 与我不一样
public class MainActivity extends Activity {
//代码1: 首先声明全局的Button
private Button mBtnTextview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
mBtnTextview = findViewById(R.id.btn_textview);
// 代码3: 添加Button的点击事件
mBtnTextview.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//代码4: 跳转到TextView界面
Intent intent = new Intent(MainActivity.this,TextViewActivity.class);
//注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
startActivity(intent);
}
});
}
}
- 建立一个Activity
在左侧栏,MainActivity.java处右击, new->Activity->EmptyActivity, 然后起个名字叫TextViewActivity,确定后, 将会自动产生 TextViewActivity.java 和 activity_text_view.xml 这两个文件, 后一个文件在 src->main->res->layout下面
并且打开 AndroidManifest.xml (app->src->main文件夹下面)看看有没有自动创建下面的代码
<activity android:name=".TextViewActivity" />
没有自动创建,那就手动添加
- 打开activity_text_view.xml, 修改android.support.constraint.ConstraintLayout为
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.qing.myapplication2.TextViewActivity">
<!--android:orientation="vertical"设置为竖行显示-->
<TextView
android:id="@+id/tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_text1"/>
<!--@string/tv_text1表示引用strings.xml ( app->src->main->res->values->strings.xml )
中的名称为tv_text1的文本,
需要在那里添加代码<string name="tv_text1">天哥在奔跑</string> -->
<!--字体大小单位用sp-->
</LinearLayout
并且编辑 app->src->main->res->values->strings.xml, 添加一个string
<string name="tv_text1">天哥在奔跑</string>
给上面的来引用。
还有最简单的方法就是 直接写
android:text="天哥在奔跑"
简单方便。这样子预览效果为
5.为了实现文本缩写的效果
继续添加下面的代码即可
<TextView
android:id="@+id/tv_2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:textColor="#000000"
android:textSize="24sp"
android:layout_marginTop="10dp"
android:text="天哥在奔跑"/>
<!--maxLines强制设置为1行文字-->
<!--ellipsize设置末尾显示不全修改为...-->
<!--android:text="天哥在奔跑" 等价于上面的引用 --
- 为了完成带图标的文本的效果
写入代码
<TextView
android:id="@+id/tv_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="24sp"
android:layout_marginTop="10dp"
android:text="筛选"
android:drawableRight="@drawable/icon_arrow_off"
android:drawablePadding="5dp"
/>
<!--android:drawableRight="@drawable/icon_arrow_off"表示引用drawable文件夹下面的.png图片,放在文字的右边-->
<!--android:drawablePadding="5dp"表示离文字距离5单位-->
并且在左侧栏app->src->main->res->drawable文件夹下面添加icon_arrow_off.png即可, 图标可以去阿里巴巴图标库下载 , 注意图标尺寸大小
- 为了完成删除线的效果
先在 activity_text_view.xml 文本中创建TextView, 设好id名字
然后打开 TextView.java 写入代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.widget.TextView;
public class TextViewActivity extends Activity {
//代码1: 声明全局变量
private TextView mTv4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//代码2: 通过id获取TextView
mTv4 = findViewById(R.id.tv_4);
//代码3.1: 画一个穿过去的线
mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
//代码3.2: 去掉锯齿
mTv4.getPaint().setAntiAlias(true);
}
}
- 为了实现文本加下划线的效果
先在 activity_text_view.xml 文本中创建TextView, 设好id名字
然后打开 TextView.java 写入代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
public class TextViewActivity extends Activity {
//代码1: 声明全局变量
private TextView mTv5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//代码2: 通过id获取TextView
mTv5 = findViewById(R.id.tv_5);
//代码3: 画一个下划线
mTv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
}
}
- 实现文本加下划线的另一种方法(HTML代码实现的方法)
先在 activity_text_view.xml 文本中创建TextView, 设好id名字,注意这里的text是空文本 android:text=""
这样子
然后打开 TextView.java 写入代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
public class TextViewActivity extends Activity {
//代码1: 声明全局变量
private TextView mTv6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//代码2: 通过id获取TextView
mTv6 = findViewById(R.id.tv_6);
//代码3: 设置文本为HTML代码, u表示HTML代码中加了下划线
mTv6.setText(Html.fromHtml("<u>天哥在奔跑</u>"));
}
}
- 为了实现文本跑马灯的效果
<TextView
android:id="@+id/tv_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="#000000"
android:textSize="24sp"
android:text="天哥在奔跑天哥在奔跑天哥在奔跑天哥在奔跑"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true" />
<!--文本字多一点,单行显示,滚动方式,永远滚动,并且获得焦点才行-->
四. Button
- 打开app->src->main->res->layout->activity_main.xml ,写入代码来创建一个Button, 需要注意父元素的布局如果是LinearLayout则要加上
android:orientation="vertical"
<!--创建一个Button-->
<Button
android:id="@+id/btn_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"/>
- 建立一个Activity
在左侧栏,MainActivity.java处右击, new->Activity->EmptyActivity, 然后起个名字叫ButtonActivity,确定后, 将会自动产生 ButtonActivity.java 和 activity_button.xml 这两个文件, 后一个文件在 src->main->res->layout下面
并且打开 AndroidManifest.xml (app->src->main文件夹下面)看看有没有自动创建下面的代码
<activity android:name=".ButtonActivity"></activity>
没有自动创建,那就手动添加
- 打开 MainActivity.java 写入代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
//代码1: 声明全局的Button
private Button mBtnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
mBtnButton = findViewById(R.id.btn_button);
//代码3: 添加Button点击事件
mBtnButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//代码4: 跳转到ButtonAvtivity界面
Intent intent = new Intent(MainActivity.this,ButtonActivity.class);
//注意这个ButtonActivity.class名称要与上面步骤2创建的ButtonActivity.java名称相匹配
startActivity(intent);
}
});
}
}
- 打开 activity_button.xml 修改为RelativeLayout布局, 并且写入代码
<?xml version="1.0" encoding="utf-8"?>
<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="10dp"
tools:context="com.example.qing.myapplication2.ButtonActivity">
<!--创建按钮1-->
<Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮1"
android:textSize="20sp"
android:textColor="#0066FF"
android:background="#FF0000"/>
</RelativeLayout>
- 为了创建圆角矩形的按钮2
- 先左侧栏res->drawable右击, new->Drawable resource file,
- 打开bg_btn2.xml 写入代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--实心橙色-->
<solid android:color="#FF9900" />
<!--圆角10dp-->
<corners android:radius="10dp" />
</shape>
- 打开 activity_button.xml 写入代码
<!--创建实心圆角矩形按钮2-->
<Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮2"
android:textSize="20sp"
android:textColor="#0066FF"
android:layout_below="@id/btn_1"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn2"/>
<!--背景调用drawable的实心圆角矩形-->
- 效果图
- 为了实现按钮3只有边框的效果, 太丑,有待改进
- 先在activity_button.xml中写入代码, 来添加一个button3
<Button
android:id="@+id/btn_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮3"
android:textSize="20sp"
android:textColor="#0066FF"
android:layout_below="@id/btn_2"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn3"/>
<!--背景调用drawable的圆角边框矩形-->
- 然后新建一个Drawable
写入代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--橙色边框 ,一定要有宽度为1dp-->
<stroke android:width="1dp" android:color="#FF9900"/>
<!--圆角10dp-->
<corners android:radius="10dp"/>
</shape>
- 为了实现按钮4按压变色的效果
- 先写入代码,创建一个Button4
<!--按压的效果-->
<Button
android:id="@+id/btn_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮4"
android:textSize="20sp"
android:textColor="#0066FF"
android:layout_below="@id/btn_3"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn4"/>
- 然后创建一个Drawable
写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--按压的时候-->
<item android:state_pressed="true">
<shape>
<solid android:color="#CC7A00" />
<corners android:radius="10dp" />
</shape>
</item>
<!--没有按压时的效果-->
<item android:state_pressed="false">
<shape>
<solid android:color="#FF9900" />
<corners android:radius="10dp" />
</shape>
</item>
</selector>
- 为了实现按钮4点击弹出提示信息的效果
- 打开activity_button.xml添加点击事件
<Button
android:id="@+id/btn_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮4"
android:textSize="20sp"
android:textColor="#0066FF"
android:layout_below="@id/btn_3"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btn4"
android:onClick="showToast"/>
<!--onClick事件-->
- 打开ButtonActivity.java,添加一个函数,代码如下:
//显示提示信息的函数
public void showToast(View view){
Toast.makeText(this,"我被点击了",Toast.LENGTH_SHORT).show();
}
- 为按钮3添加点击事件的另一种方法
(这是常用的方法,这方法也可以为TextView设置点击事件)
打开ButtonActivity.java写入代码:
package com.example.qing.myapplication2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ButtonActivity extends AppCompatActivity {
//代码1: 声明全局变量
private Button mBtn3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
//代码2: 通过id获取Button
mBtn3 = (Button) findViewById(R.id.btn_3);
//代码3: 添加点击事件
mBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(ButtonActivity.this,"按钮3被点击了,这是最常用的点击事件",Toast.LENGTH_LONG).show();
}
});
}
}
五. EditText 来实现登录
- 打开activity_main.xml 添加一个按钮 btn_edittext ,用来点击跳到新的页面来演示
- 打开MainActivity.java,为刚才的按钮添加点击事件,跳到新的页面来演示
package com.example.qing.myapplication2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
//代码1: 首先声明全局的Button
private Button mBtnTextview;
private Button mBtnButton;
private Button mBtnEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
mBtnTextview = findViewById(R.id.btn_textview);
// 代码3: 添加Button的点击事件
mBtnTextview.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//代码4: 跳转到TextView界面
Intent intent = new Intent(MainActivity.this,TextViewActivity.class);
//注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
startActivity(intent);
}
});
//代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
mBtnButton = findViewById(R.id.btn_button);
//代码3: 添加Button点击事件
mBtnButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//代码4: 跳转到ButtonAvtivity界面
Intent intent = new Intent(MainActivity.this,ButtonActivity.class);
//注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
startActivity(intent);
}
});
//代码2: 通过id获取EditText
mBtnEditText = findViewById(R.id.btn_edittext);
//代码3: 添加点击事件
mBtnEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//代码4: 跳转到EditTextAvtivity界面
Intent intent = new Intent(MainActivity.this,EditTextActivity.class);
//注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
startActivity(intent);
}
});
}
}
- 在左侧栏src->java->com.*.myapplication2下面新建一个EmptyActivity, 起名字叫EditTextActivity, 系统会自动创建 EditTextActivity.java 和 activity_edit_text.xml 并且在AndroidManifest.xml 自动帮我们添加下面的声明
<activity android:name=".EditTextActivity"></activity>
- 打开activity_edit_text.xml写入代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:textSize="16sp"
android:textColor="#FFAD33"
android:hint="用户名"
android:background="@drawable/bg_username"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:drawableLeft="@drawable/icon_user"
/>
<!--android:hint="用户名" 设置为提示符的效果-->
<!--android:background="@drawable/bg_username" 背景设为橙色边框-->
<!--android:drawableLeft="@drawable/icon_user" 设置左侧显示图标-->
<EditText
android:id="@+id/et_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/et_1"
android:textSize="16sp"
android:textColor="#FFAD33"
android:hint="密码"
android:inputType="textPassword"
android:background="@drawable/bg_username"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginTop="20dp"
android:drawableLeft="@drawable/icon_password"
/>
<!--inputType="textPassword" 设置为看不见明文的效果-->
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="登录"
android:layout_below="@+id/et_2"
android:layout_marginTop="20dp"
android:textColor="#ffffff"
android:background="@drawable/bg_btn4"
/>
<!--android:background="@drawable/bg_btn4" 背景设置为带有按压的效果-->
<!--通过java代码来添加点击事件-->
</RelativeLayout>
- 注意上面需要引用两个icon , 和带有边框效果的背景, 还有带有按压效果的背景, 请参考前面的button章节
- 打开EditTextActivity.java写入代码, 来添加按钮点击事件
package com.example.qing.myapplication2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class EditTextActivity extends AppCompatActivity {
private Button mBtnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_text);
//通过id获取button,并添加点击事件
mBtnLogin = (Button) findViewById(R.id.btn_login);
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//弹出消息提示框
Toast.makeText(EditTextActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
}
});
}
}
- EditText添加其他事件
//声明全局的变量
private EditText mEtUserName;
//下面写到onCreate函数中
mEtUserName = (EditText) findViewById(R.id.et_1);
mEtUserName.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) {
//最常用的函数
//打印内容,Android Monitor里面看到输出文本
Log.d("文本是:",charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
六.RadioButton
- 打开MainActivity.java, 添加一个Button跳转到RadioButtonActivity界面, 并且简化一下代码
package com.example.qing.myapplication2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
//代码1: 首先声明全局的Button
private Button mBtnTextview;
private Button mBtnButton;
private Button mBtnEditText;
private Button mBtnRadoiButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
mBtnTextview = findViewById(R.id.btn_textview);
//通过id获取Button,必要时需要把view强制转换为Button类型
mBtnButton = findViewById(R.id.btn_button);
//通过id获取EditText
mBtnEditText = findViewById(R.id.btn_edittext);
//通过id获取RadoiButton
mBtnRadoiButton = findViewById(R.id.btn_radiobutton);
//给上面几个全都添加点击事件
setListener();
}
//添加监听器
private void setListener(){
OnClick onClick = new OnClick();
mBtnTextview.setOnClickListener(onClick);
mBtnButton.setOnClickListener(onClick);
mBtnRadoiButton.setOnClickListener(onClick);
}
private class OnClick implements View.OnClickListener{
@Override
public void onClick(View v) {
Intent inten = null;
switch (v.getId()){
case R.id.btn_textview:
inten = new Intent(MainActivity.this,TextViewActivity.class);
break;
case R.id.btn_button:
inten = new Intent(MainActivity.this,ButtonActivity.class);
break;
case R.id.btn_edittext:
inten = new Intent(MainActivity.this,EditTextActivity.class);
break;
case R.id.btn_radiobutton:
inten = new Intent(MainActivity.this,RadioButtonActivity.class);
break;
}
startActivity(inten);
}
}
}
- 新建一个EmptyActivity起名字叫 RadioButtonActivity,系统会自动完成3件事,
- 打开activity_radio_button.xml, 写入代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!--设置效果1-->
<RadioGroup
android:id="@+id/rg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="20dp"
>
<!--RadioGroup里面的RadioButton必须要设置id-->
<RadioButton
android:id="@+id/rb_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:textSize="18sp"
android:textColor="#FF6600"
android:checked="true"
/>
<!--android:checked="true" 设置默认是选中男-->
<RadioButton
android:id="@+id/rb_woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="18sp"
android:textColor="#FF6600"
/>
</RadioGroup>
<!--设置效果2,更好看点-->
<RadioGroup
android:id="@+id/rg_2"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/rg_1"
android:layout_marginTop="30dp"
android:paddingLeft="20dp"
>
<RadioButton
android:id="@+id/rb_male"
android:layout_width="60dp"
android:layout_height="30dp"
android:gravity="center"
android:text="男"
android:textSize="18sp"
android:textColor="#FF6600"
android:checked="true"
android:button="@null"
android:background="@drawable/selector_orange_radiobutton"
/>
<!--android:button="@null" 设置去掉前面的圆点-->
<!--android:gravity="center" 设置文字居中-->
<RadioButton
android:id="@+id/rb_female"
android:layout_width="60dp"
android:layout_height="30dp"
android:text="女"
android:gravity="center"
android:background="@drawable/selector_orange_radiobutton"
android:button="@null"
android:textSize="18sp"
android:textColor="#FF6600"
android:layout_marginLeft="10dp"
/>
</RadioGroup>
</RelativeLayout>
- 新建一个Drawable文件, 命名为selector_orange_radiobutton.xml,写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--选中的时候,是橙色的填充背景-->
<item android:state_checked="true">
<shape>
<solid android:color="#AA6600" />
<corners android:radius="5dp" />
</shape>
</item>
<!--没有选中时,是橙色的边框-->
<item android:state_checked="false">
<shape>
<stroke android:width="1dp"
android:color="#AA6600"/>
<corners android:radius="5dp" />
</shape>
</item>
</selector>
-
效果图
-
添加点击事件 , 编辑RadioButtonActivity.java
package com.example.qing.myapplication2;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class RadioButtonActivity extends AppCompatActivity {
private RadioGroup mRg1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radio_button);
mRg1 = (RadioGroup) findViewById(R.id.rg_1);
mRg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
//找到被选中的RadioButton
RadioButton radioButton = (RadioButton) radioGroup.findViewById(i);
//输出radioButton的文本
Toast.makeText(RadioButtonActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
}
});
}
}
七. CheckBox复选框
- 创建一个EmptyActivity命名为CheckBoxActivity, 系统会自动完成3个任务
- activity_main.xml中添加一个按钮,点击跳转到新的演示界面, MainActivity.java添加相应的点击事件
- 编辑activity_check_box.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"
>
<RelativeLayout
android:id="@+id/rl_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你会哪些编程语言:"
android:textSize="20sp"
/>
<CheckBox
android:id="@+id/cb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Java"
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="C语言"
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="C++"
android:textSize="20sp"
android:layout_below="@id/cb_2"
/>
<CheckBox
android:id="@+id/cb_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C#"
android:textSize="20sp"
android:layout_below="@id/cb_3"
/>
</RelativeLayout>
<!--加了背景的checkbox 更好看点-->
<RelativeLayout
android:id="@+id/rl_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/rl_1">
<TextView
android:id="@+id/tv_title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你的兴趣爱好是:"
android:textSize="20sp"
/>
<CheckBox
android:id="@+id/cb_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="玩电脑"
android:textSize="20sp"
android:layout_below="@id/tv_title2"
android:button="@drawable/bg_checkbox"
android:paddingLeft="5dp"
/>
<!--设置paddingLeft而不是DrawableLeft-->
<!--设置好背景-->
<CheckBox
android:id="@+id/cb_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="玩手机"
android:textSize="20sp"
android:layout_below="@id/cb_5"
android:button="@drawable/bg_checkbox"
android:paddingLeft="5dp"
/>
<CheckBox
android:id="@+id/cb_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打篮球"
android:textSize="20sp"
android:layout_below="@id/cb_6"
android:button="@drawable/bg_checkbox"
android:paddingLeft="5dp"
/>
<CheckBox
android:id="@+id/cb_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="听音乐"
android:textSize="20sp"
android:layout_below="@id/cb_7"
android:button="@drawable/bg_checkbox"
android:paddingLeft="5dp"
/>
</RelativeLayout>
</RelativeLayout>
- 找到两个icon,还要新建一个Drawable文件,命名为bg_checkbox.xml,写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--checkbox未选中时,使用icon_checkbox_false.png-->
<item android:state_checked="false" android:drawable="@drawable/icon_checkbox_false" />
<!--checkbox选中时,使用icon_checkbox_true.png-->
<item android:state_checked="true" android:drawable="@drawable/icon_checkbox_true" />
</selector>
-
效果图
-
为checkbox添加点击事件,编辑CheckBoxActivity.java
package com.example.qing.myapplication2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
public class CheckBoxActivity extends AppCompatActivity {
private CheckBox mCb5,mCb6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_box);
mCb5 = (CheckBox) findViewById(R.id.cb_5);
mCb6 = (CheckBox) findViewById(R.id.cb_6);
mCb5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
Toast.makeText(CheckBoxActivity.this,isChecked?"5被选中":"5未被选中",Toast.LENGTH_SHORT).show();
}
});
mCb6.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
Toast.makeText(CheckBoxActivity.this,isChecked?"6被选中":"6未被选中",Toast.LENGTH_SHORT).show();
}
});
}
}
八. ImageView
- 新建EmptyActivity, 命名为ImageViewActivity,系统会自动完成3个任务
- 编辑Activity_main.xml,添加一个按钮,并添加点击事件,跳转到新的页面来演示
- 编辑activity_image_view.xml, 添加3个ImageView
<?xml version="1.0" encoding="utf-8"?>
<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="com.example.qing.myapplication2.ImageViewActivity">
<ImageView
android:id="@+id/iv_1"
android:layout_width="300dp"
android:layout_height="200dp"
android:background="#FF9900"
android:src="@drawable/bg_img1"
android:scaleType="fitXY"
/>
<!--android:scaleType="fitXY" 设置为拉伸填满-->
<!--android:scaleType="fitCenter" 设置为拉伸居中,不填满-->
<!--android:scaleType="centerCrop" 设置为裁剪居中-->
<ImageView
android:id="@+id/iv_2"
android:layout_width="300dp"
android:layout_height="200dp"
android:background="#FF9900"
android:src="@drawable/bg_img1"
android:layout_below="@id/iv_1"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
/>
<!--这里演示一下加载网络图片-->
<ImageView
android:id="@+id/iv_4"
android:layout_width="300dp"
android:layout_height="200dp"
android:background="#FF9900"
android:layout_below="@id/iv_2"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
/>
</RelativeLayout>
-
效果图
-
为了给ImageView4加载网络上的图片,需要引用github上面的Glide
我导入失败了,后续更新…
编辑build.gradle文件,添加代码,可能细微之间还须修改,我出错了很多次才成功的
//引用图片
repositories {
mavenCentral()
// google()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:25.3.1'
//引用图片
compile 'com.github.bumptech.glide:glide:4.0.0'
//compile 'com.android.suppor:support-v4:25.3.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}
- 编辑ImageViewActivity.java
package com.example.qing.myapplication2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
public class ImageViewActivity extends AppCompatActivity {
private ImageView mIv4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_view);
mIv4 = (ImageView) findViewById(R.id.iv_4);
//Glide加载网络上的图片到mIv4中去
Glide.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1547022866640&di=d1dcdffcf4735c63741ac9bbcc8d15d4&imgtype=0&src=http%3A%2F%2Fe.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F83025aafa40f4bfb0f815ad60e4f78f0f63618db.jpg")
.into(mIv4);
}
}
- 还需要编辑AndroidManifest.xml添加网络权限
<!--加载网络权限,添加在application的前面-->
<uses-permission android:name="android.permission.INTERNET" />
- 预览效果
九.ListView
先来演示手动创建一个ListViewActivity,不用系统自动生成
9. java下面新建一个包ListViewActivity,新建一个类ListViewActivity.java继承Activity
10. 编辑ListViewActivity.java
package com.example.qing.myapplication2.listViewActivity;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.ListView;
import com.example.qing.myapplication2.R;
public class ListViewActivity extends Activity {
private ListView mLv1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
//获取activity_listview.xml中的ListView,id是lv_1
mLv1 = (ListView) findViewById(R.id.lv);
//添加一个自制的监听器
mLv1.setAdapter(new MyListAdapter(ListViewActivity.this));
}
}
- 左侧栏新建一个MyListAdapter.java
package com.example.qing.myapplication2.listViewActivity;
import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.qing.myapplication2.R;
public class MyListAdapter extends BaseAdapter {
private Context context;
private LayoutInflater mLayoutInflater;
MyListAdapter(Context context){
this.context = context;
mLayoutInflater = LayoutInflater.from(context);
}
//设置item的数量
@Override
public int getCount() {
return 20;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
//静态类
static class ViewHolder{
public ImageView imageView;
public TextView tvTile,tvTime,tvContent;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
convertView = mLayoutInflater.inflate(R.layout.layout_list_item,null);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.iv);
holder.tvTile = convertView.findViewById(R.id.tv_title);
holder.tvTime = convertView.findViewById(R.id.tv_time);
holder.tvContent = convertView.findViewById(R.id.tv_content);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tvTile.setText("这是标题");
holder.tvTime.setText("2088-08-08");
holder.tvContent.setText("这是新的内容");
//Glide
//Glide.with(mContext).load("https://...").into(mIv4);
return convertView;
}
}
- 左侧栏layout右击,新建一个layout resource file,命名为activity_listview, 这里与上面java代码中R.layout.activity_listview相照应, 编辑 activity_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:orientation="vertical">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
- 左侧栏layout新建一个layout_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#000"
android:scaleType="centerCrop"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp"
>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
android:textSize="20sp"
android:textColor="@color/colorBlack"
/>
<!--android:textColor="@color/colorBlack" 顏色引用values下面的colors.xml中的資源-->
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="2019-1-8"
android:textSize="18sp"
android:textColor="@color/colorGrayDark"
/>
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是内容"
android:textSize="18sp"
/>
</LinearLayout>
</LinearLayout>
- 在AndroidManifest.xml中手动声明一下,如果自动创建系统会自动声明
<activity android:name=".listViewActivity.ListViewActivity"></activity>
或者这样子
<activity android:name="com.example.qing.myapplication2.listViewActivity.ListViewActivity"></activity>
- 为每一项添加点击事件, 编辑ListViewActivity.java,在设定自制监听器下面继续添加代码
//为每一项添加点击事件
mLv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ListViewActivity.this,"你点击了第"+position+"项",Toast.LENGTH_SHORT).show();
//后面可以添加跳转新页面的事件
}
});
//为每一项添加长按事件
mLv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ListViewActivity.this,"你长按了第"+position+"项",Toast.LENGTH_SHORT).show();
//后面还可以添加编辑删除的功能
//true表示我已经处理完了,不需要上面的点击事件再来处理一次
return true;
}
});
- 效果图
十. GridView
这个控件与上面的ListView类似
9. activity_main.xml下面添加一个按钮, 并且MainActivity.java下面添加点击事件,点击跳转到新的演示界面
10. 左侧栏java下面新建一个包gridView, 下面建立一个类GridViewActivity.java
package com.example.qing.myapplication2.gridView;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.GridView;
import com.example.qing.myapplication2.R;
import com.example.qing.myapplication2.listViewActivity.MyListAdapter;
public class GridViewActivity extends AppCompatActivity {
private GridView mGv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gridview);
//获取Activity_gridview.xml中的GridView,id是gv
mGv = (GridView) findViewById(R.id.gv);
//添加一个自制的监听器
mGv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
}
}
- layout下面新建一个activity_gridview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
/>
<!--android:numColumns="3" 列数-->
<!--android:horizontalSpacing="10dp" 水平间距-->
</LinearLayout>
- gridview包下面新建一个类, MyGridViewAdapter.java
package com.example.qing.myapplication2.gridView;
import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.qing.myapplication2.R;
import com.example.qing.myapplication2.listViewActivity.MyListAdapter;
public class MyGridViewAdapter extends BaseAdapter {
private Context mcontext;
private LayoutInflater mLayoutInflater;
public MyGridViewAdapter(Context context){
this.mcontext = context;
mLayoutInflater = LayoutInflater.from(context);
}
//控制所有的item数量
@Override
public int getCount() {
return 10;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
static class ViewHolder{
public ImageView imageView;
public TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
convertView = mLayoutInflater.inflate(R.layout.layout_grid_item,null);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.btn_imageview);
holder.textView = convertView.findViewById(R.id.tv_title);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//赋值
holder.textView.setText("花");
//Glide
//Glid.with(mcontext),load("http://...").into(holder.imageView);
return convertView;
}
}
- layout下面新建一个layout_grid_item.xml, 表示每一个item的样子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_grid"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scaleType="fitCenter"
android:background="@color/colorBlack"
/>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello"
android:textColor="@color/colorAccent"
android:gravity="center"
android:layout_marginTop="10dp"
/>
</LinearLayout>
- 在AndroidManifest.xml 里面添加声明
<activity android:name=".gridView.GridViewActivity"></activity>
- 最后给每一项添加点击事件,编辑 GridViewActivity.java,代码添加在自制的监听器下面
//添加每一项点击事件
mGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(GridViewActivity.this,"你点击了第"+position+"项",Toast.LENGTH_SHORT).show();
}
});
//添加每一项长按事件
mGv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(GridViewActivity.this,"你长按第"+position+"项",Toast.LENGTH_SHORT).show();
//true表示这件事我处理完了,不需要上面的点击事件再来处理一次
return true;
}
});
- 效果图
十一.滚动视图ScrollView
编辑activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:background="#00FF00">
<!--ScrollView 下面只能包含一个子元素,所以要用LinearLayout包含所有的Button-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<Button
android:id="@+id/btn_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAllCaps="false"/>
<!--android:textAllCaps="false"关闭默认的所有文字大写-->
<Button
android:id="@+id/btn_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:textAllCaps="false"/>
<Button
android:id="@+id/btn_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="EditText"
android:textAllCaps="false"/>
<Button
android:id="@+id/btn_radiobutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton"
android:textAllCaps="false"/>
<Button
android:id="@+id/btn_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox"
android:textAllCaps="false"/>
<Button
android:id="@+id/btn_imageview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="imageview"
android:textAllCaps="false"/>
<Button
android:id="@+id/btn_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ListView"
android:textAllCaps="false"/>
<!--android:textAllCaps="false"关闭默认的所有文字大写-->
<Button
android:id="@+id/btn_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GridView"
android:textAllCaps="false"/>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!--同样的HorizontalScrollView子元素只能有一个,所以用LinearLayout把所有的Button包起来-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="text HorizontalScrollView"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="text HorizontalScrollView"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="text HorizontalScrollView"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="text HorizontalScrollView"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="text HorizontalScrollView"
android:textAllCaps="false"
/>
</LinearLayout>
</HorizontalScrollView>
<!--测试滚动视图-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试滚动视图"
android:textAllCaps="false"
android:layout_marginTop="300dp"
/>
</LinearLayout>
</ScrollView>
效果图
下接博客: https://blog.csdn.net/wang342626/article/details/87917342