总结1链接:
(156条消息) Android Studio应用基础,手把手教你从入门到精通(小白学习)总结1_好喜欢吃红柚子的博客-CSDN博客
学习视频链接:
(学完必会)Android studio基础,从入门到精通,学完小白也能会_哔哩哔哩_bilibili
目录
五、常见界面布局
1. LinearLayout布局
1.1 orientation属性:决定控件的排列方式
1.2 layout_gravity:决定控件在布局中的对齐方式
1.3 gravity:决定文字在控件中的对齐方式
1.4 weight 权重
2. RelativeLayout相对布局
2.1 根据布局定位的位置属性
2.2 根据其他控件定位的位置属性
3. ConstraintLayout布局
4. 自定义布局
4.1 自定义布局的书写
4.2 在主布局中引用自定义布局
4.3 隐藏系统自带标题栏
5、TableLayout行列布局
六、水平和竖直滚动条
1. HorizentalScrollView 水平滚动条
2. 垂直滚动条ScrollView
七、ListView滚动菜单
1. 滚动菜单ListView的简单应用
2. 定制ListView界面
3.实现ListView的点击事件
LinearLayout布局的语法格式为
……
android:orientation="horizontal" 或者 “vertical”
horizontal 水平排列 vertical 垂直排列
如果不指定orientation的值,默认排列方式是horizontal。
效果:
效果:
(1)作用:可以使布局内的控件按照权重比显示大小,起到屏幕适配的重要作用
因为使用了权重weight属性,所以可以将控件的宽度设置为0dp,此时的宽度由权重值决定
(2)应用:
效果如下图1所示。
语法如下:
为5个按钮分别设置不同的页面效果。
效果:
让按钮1,2,4,5根据按钮3进行位置的排列
效果:
语法格式如下:
效果如下(有点丑)
在main_activity.xml文件中插入如下语句:
表示将自定义布局引入该布局中。
效果如下:
在main_activity.java中使用ActionBar完成对系统标题栏的隐藏,具体使用方法后续会讲解~
package cn.edu.sdut.layout;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Notification;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.hide();
}
}
}
成功隐藏系统标题栏:
水平滚动条只能包含一个视图,因此不能直接把多个按钮放进去,所以需要先新建一个linear布局的视图,把五个按钮放进去,再把linear布局放在水平滚动条内,即可
1. 第一层:线性布局大框架
2.第二层:水平滚动条部件 3. 第三层:线性布局容器,用来装按钮 4. 放置多个按钮
ScrollView在最外层,要有xmlns的这个语句,因为这个语句是唯一的,而且只能且必须加在最外层框架的头标签里。
xmlns:android="http://schemas.android.com/apk/res/android"
结构:
1. ScrollView,在最外层
2. 线性布局容器,装按钮 3. 放置多个按钮
代码:
新建一个名为ListView的项目,完成后续操作。
String类型的fruit数组存储了菜单想要显示的内容
数组中的数组无法直接传递给ListView,因此需要借助适配器完成,使用ArrayAdapter完成数据对ListView的传输,适配器的构造函数中需要其次传入三个参数:
- 所处的activity
- Android自带的xml文件的构造文字的容器
- 想要输出的内容。
最后使用setAdapter方法给滚动菜单配置上刚刚定义的配适器
package cn.edu.sdut.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
// 数组存取listview想要展示的信息
private String[] fruit ={"apple","banana","orange","watermelon",
"pear","grape","strawberry","cherry","mango","Coconut","tomato","lemon",
"apple","banana","orange","watermelon", "pear","grape","strawberry","cherry",
"mango","Coconut"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 配置适配器
ArrayAdapter adapter = new ArrayAdapter
(MainActivity.this, android.R.layout.simple_list_item_1,fruit);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
效果如下:
实现水果图片和对应水果名称匹配一起在滚动列表中显示。
package cn.edu.sdut.listview;
public class Fruit {
private String name;
private int imageId;
public Fruit(String name, int imageId) {
this.name = name;
this.imageId = imageId;
}
public String getName() {
return name;
}
public int getimageId() {
return imageId;
}
}
package cn.edu.sdut.listview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class FruitAdapter extends ArrayAdapter {
private int resourceId;
public FruitAdapter(Context context, int textViewResourceId, List object){
super(context,textViewResourceId,object);
resourceId = textViewResourceId;
}
public View getView(int position, View coverView, ViewGroup parent){
Fruit fruit = getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);
fruitImage.setImageResource(fruit.getimageId());
fruitName.setText(fruit.getName());
return view;
}
}
1. 新建一个水果类的列表,进行对水果名和水果图片名的存储
2. 使用initFruit方法进行对列表元素的添加
3. 把适配器给滚动列表set上
package cn.edu.sdut.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List fruitList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
FruitAdapter adapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
//把水果名称和对应图片加入信息列表
private void initFruits(){
for(int i=0;i<2;i++){
Fruit apple = new Fruit("apple",R.drawable.apple);
fruitList.add(apple);
Fruit banana = new Fruit("banana",R.drawable.banana);
fruitList.add(banana);
Fruit orange = new Fruit("orange",R.drawable.orange);
fruitList.add(orange);
Fruit watermelon = new Fruit("watermelon",R.drawable.watermelon);
fruitList.add(watermelon);
Fruit pear= new Fruit("pear",R.drawable.pear);
fruitList.add(pear);
Fruit grape = new Fruit("grape",R.drawable.grape);
fruitList.add(grape);
Fruit strawberry = new Fruit("strawberry",R.drawable.stawberry);
fruitList.add(strawberry);
Fruit cherry = new Fruit("cherry",R.drawable.cherry);
fruitList.add(cherry);
Fruit mango = new Fruit("mango",R.drawable.mango);
fruitList.add(mango);
Fruit coconut = new Fruit("coconut",R.drawable.coconut);
fruitList.add(coconut);
Fruit tomato = new Fruit("tomato",R.drawable.tomato);
fruitList.add(tomato);
Fruit lemon = new Fruit("lemon",R.drawable.lemon);
fruitList.add(lemon);
}
}
}
效果如下:
在主活动中添加如下代码
代码:
package cn.edu.sdut.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List fruitList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//为fruitList列表添加元素
initFruits();
FruitAdapter adapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
// 设置点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> adapterView, View view, int i, long l) {
Fruit fruit = fruitList.get(i);
Toast.makeText(MainActivity.this,fruit.getName(), Toast.LENGTH_SHORT).show();
}
});
}
//把水果名称和对应图片加入信息列表
private void initFruits(){
// 为了让滚动列表中多显示一些元素,所以添加两遍重复的内容
for(int i=0;i<2;i++){
Fruit apple = new Fruit("apple",R.drawable.apple);
fruitList.add(apple);
Fruit banana = new Fruit("banana",R.drawable.banana);
fruitList.add(banana);
Fruit orange = new Fruit("orange",R.drawable.orange);
fruitList.add(orange);
Fruit watermelon = new Fruit("watermelon",R.drawable.watermelon);
fruitList.add(watermelon);
Fruit pear= new Fruit("pear",R.drawable.pear);
fruitList.add(pear);
Fruit grape = new Fruit("grape",R.drawable.grape);
fruitList.add(grape);
Fruit strawberry = new Fruit("strawberry",R.drawable.stawberry);
fruitList.add(strawberry);
Fruit cherry = new Fruit("cherry",R.drawable.cherry);
fruitList.add(cherry);
Fruit mango = new Fruit("mango",R.drawable.mango);
fruitList.add(mango);
Fruit coconut = new Fruit("coconut",R.drawable.coconut);
fruitList.add(coconut);
Fruit tomato = new Fruit("tomato",R.drawable.tomato);
fruitList.add(tomato);
Fruit lemon = new Fruit("lemon",R.drawable.lemon);
fruitList.add(lemon);
}
}
}
效果: