Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView

总结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的点击事件


五、常见界面布局

1. LinearLayout布局

LinearLayout布局的语法格式为



……

1.1 orientation属性:决定控件的排列方式 

 android:orientation="horizontal" 或者 “vertical”


Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第1张图片                   Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第2张图片

            horizontal 水平排列                                                               vertical 垂直排列

如果不指定orientation的值,默认排列方式是horizontal。

  • 若排列方式为horizontal,则不能指定宽度为match-parent,因为一个按钮的宽度就会把整个屏幕占满,出现下图1所示情况
  • 若排列方式为vertical,则不能指定高度为match-parent,因为一个按钮的高度就会把整个屏幕占满,出现下图2所示情况

   Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第3张图片               Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第4张图片                                               1                                                                            2                   

1.2 layout_gravity:决定控件在布局中的对齐方式

效果:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第5张图片

1.3 gravity:决定文字在控件中的对齐方式

  •  把button2的文字对齐方式改为bottom
  • android:gravity="right|bottom" 组合使用
 

效果:        

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第6张图片

1.4 weight 权重

(1)作用:可以使布局内的控件按照权重比显示大小,起到屏幕适配的重要作用

因为使用了权重weight属性,所以可以将控件的宽度设置为0dp,此时的宽度由权重值决定

(2)应用:

  •  设置两个控件的权重均为1,则屏幕会按1:1比例为控件分配大小


    

效果如下图1所示。

  • 设置输入框的权重为1,设置按钮的宽度为wrap-content,则可如图2效果所示,为常用的手机布局设置。

    

    

         Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第7张图片         Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第8张图片                                                         1                                                                      2

 2. RelativeLayout相对布局

语法如下: 




 2.1 根据布局定位的位置属性

为5个按钮分别设置不同的页面效果。

  • android:layout_alignParentLeft="true"     设置当前控件与父布局左对齐
  • android:layout_alignParentTop="true"      设置当前控件与父布局顶端对齐
  • android:layout_centerInParent="true"      设置当前控件位于父布局的中央位置 


    

    

    

    

效果:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第9张图片

2.2 根据其他控件定位的位置属性

让按钮1,2,4,5根据按钮3进行位置的排列 

  •  android:layout_above="@+id/b3"       此控件在b3之上
  •  android:layout_toLeftOf="@+id/b3"    此控件在b3左边
  • android:layout_below="@+id/b3"        此控件在b3之下
  • android:layout_toRightOf="@+id/b3"   此控件在b3右边


    

    

    

    

效果:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第10张图片

3. ConstraintLayout布局

语法格式如下: 




    

4. 自定义布局

4.1 自定义布局的书写

  • 新建一个布局文件title.xml,导入需要的按钮和背景的图片,把自定义标题栏写好



    

    

    

  • 在写标题栏过程中为防止出现控件文字不显示问题,把values文件夹目录下的themes.xml文件改为如下语句。

    
    

效果如下(有点丑)

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第11张图片

4.2 在主布局中引用自定义布局

在main_activity.xml文件中插入如下语句:


    

表示将自定义布局引入该布局中。 

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第12张图片

效果如下:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第13张图片

4.3 隐藏系统自带标题栏

在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();
        }
    }
}

成功隐藏系统标题栏:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第14张图片

5、TableLayout行列布局 




    

六、水平和竖直滚动条

1. HorizentalScrollView 水平滚动条

水平滚动条只能包含一个视图,因此不能直接把多个按钮放进去,所以需要先新建一个linear布局的视图,把五个按钮放进去,再把linear布局放在水平滚动条内,即可

  • 结构:


1. 第一层:线性布局大框架



    2.第二层:水平滚动条部件

    

          3. 第三层:线性布局容器,用来装按钮

          

    
                      4. 放置多个按钮


           


    

  • 代码:








    



    

2. 垂直滚动条ScrollView

ScrollView在最外层,要有xmlns的这个语句,因为这个语句是唯一的,而且只能且必须加在最外层框架的头标签里。

xmlns:android="http://schemas.android.com/apk/res/android"

结构:








1. ScrollView,在最外层 



      2. 线性布局容器,装按钮

    

        
            3. 放置多个按钮


    


代码:








    

        
        
        
        
        
        
        
        
        


    

七、ListView滚动菜单

新建一个名为ListView的项目,完成后续操作。

1. 滚动菜单ListView的简单应用

  •  在布局文件中定义一个滚动菜单
  •  在MainActivity.java文件中进行对显示数据和适配器的定义

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);
    }
}

效果如下:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第15张图片

2. 定制ListView界面

实现水果图片和对应水果名称匹配一起在滚动列表中显示。

  • 新建Fruit.java类,进行水果名和水果图片名称的实体类编写
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;
    }
}
  •  定义水果适配器FruitAdaptor.java
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;
    }

}
  •  对主活动进行编写MainActivity.java进行编写

     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);
        }
    }

}

效果如下:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第16张图片

3.实现ListView的点击事件

  • 使用setOnItemListener方法为滚动菜单设置点击事件
  • onItemClick方法参数中的 i 为点击到的具体元素
  • 使用toast方法将点击到的水果名弹窗显示

在主活动中添加如下代码 

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第17张图片

 代码:

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);
        }
    }

}

效果:

Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView_第18张图片

你可能感兴趣的:(Android开发,android,studio,java,xml,android-studio,android)