列表视图
- 常用属性
- Adapter接口
package com.example.zzm.helloworld.listview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.example.zzm.helloworld.R;
/**
* Created by ZZM on 2022/2/6.
*/
public class ListViewActivity extends Activity {
private ListView mLv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
mLv1=(ListView)findViewById(R.id.lv_1);
mLv1.setAdapter(new MyListAdapter(ListViewActivity.this));
//点击事件
mLv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(ListViewActivity.this,"点击pos:"+position, Toast.LENGTH_SHORT).show();
}
});
mLv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(ListViewActivity.this,"长按 pos:"+position, Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
``
```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">
<ListView
android:id="@+id/lv_1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
package com.example.zzm.helloworld.listview;
import android.content.Context;
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.zzm.helloworld.R;
import org.w3c.dom.Text;
/**
* Created by ZZM on 2022/2/6.
*/
public class MyListAdapter extends BaseAdapter{
private Context mContext;
private LayoutInflater mLayoutInflater;
public MyListAdapter(Context context){
this.mContext=context;
mLayoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return 10;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
public class ViewHolder{
public ImageView imageView;
public TextView tvTitle,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_view,null);
holder=new ViewHolder();
holder.imageView=(ImageView)convertView.findViewById(R.id.iv);
holder.tvTitle=(TextView)convertView.findViewById(R.id.tv_title);
holder.tvTime=(TextView)convertView.findViewById(R.id.tv_time);
holder.tvContent=(TextView)convertView.findViewById(R.id.tv_content);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
//给控件赋值
holder.tvTitle.setText("这是标题");
holder.tvTime.setText("2088-08-08");
holder.tvContent.setText("这是内容");
Glide.with(mContext).load("").into(holder.imageView);
return convertView;
return null;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="centerCrop"
android:background="#000"
/>
<LinearLayout
android:layout_width="wrap_content"
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"/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2017-08-26"
android:textSize="20sp"
android:textColor="@color/colorGray"/>
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2017-08-26"
android:textSize="20sp"
android:textColor="@color/colorGray"/>
</LinearLayout>
</LinearLayout>
网格视图
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"
android:orientation="vertical">
<GridView
android:id="@+id/gv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp">
</GridView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/iv_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
android:gravity="center"
android:textColor="@color/colorBlack"/>
<!--gravity 内容的对齐方式-->
</LinearLayout>
ScrollView视图
- 垂直滚动:ScrollView:
子元素只能有一个
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/btn_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:paddingTop="0dp"/>
<Button
android:id="@+id/btn_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:paddingTop="10dp"
android:layout_below="@+id/btn_textview"/>
<Button
android:id="@+id/btn_edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="EditText"
android:textAllCaps="false"
android:layout_below="@+id/btn_button"
/>
<!--textAllCaps显示大写 -->
<Button
android:id="@+id/btn_radiobutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton"
android:padding="5dp"
android:layout_below="@+id/btn_edittext"
/>
<Button
android:id="@+id/btn_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox"
android:padding="5dp"
android:layout_below="@+id/btn_radiobutton"
/>
<Button
android:id="@+id/btn_imageview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ImageView"
android:padding="5dp"
android:layout_below="@+id/btn_checkbox"
/>
<Button
android:id="@+id/btn_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ListView"
android:padding="5dp"
android:layout_below="@+id/btn_imageview"
/>
<Button
android:id="@+id/btn_grideview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GrideView"
android:padding="5dp"
android:layout_below="@+id/btn_listview"
/>
<Button
android:id="@+id/scrollview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:textAllCaps="false"
android:layout_marginTop="300dp"
android:layout_below="@+id/btn_grideview"/>
</LinearLayout>
</ScrollView>
- 水平滚动:HorizontalScrollView
子布局也只能有一个
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/btn_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:paddingTop="0dp"/>
<Button
android:id="@+id/btn_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:paddingTop="10dp"
android:layout_below="@+id/btn_textview"/>
<Button
android:id="@+id/btn_edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="EditText"
android:textAllCaps="false"
android:layout_below="@+id/btn_button"
/>
<!--textAllCaps显示大写 -->
<Button
android:id="@+id/btn_radiobutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton"
android:padding="5dp"
android:layout_below="@+id/btn_edittext"
/>
<Button
android:id="@+id/btn_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox"
android:padding="5dp"
android:layout_below="@+id/btn_radiobutton"
/>
<Button
android:id="@+id/btn_imageview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ImageView"
android:padding="5dp"
android:layout_below="@+id/btn_checkbox"
/>
<Button
android:id="@+id/btn_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ListView"
android:padding="5dp"
android:layout_below="@+id/btn_imageview"
/>
<Button
android:id="@+id/btn_grideview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GrideView"
android:padding="5dp"
android:layout_below="@+id/btn_listview"
/>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<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="Test"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="Test"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="Test"
android:textAllCaps="false"
/>
<Button
android:layout_width="200dp"
android:layout_height="300dp"
android:text="Test"
android:textAllCaps="false"
/>
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
</ScrollView>

RecyclerView
(非常重要的控件)
RecyclerView能够灵活实现大数据的展示,视图的复用管理比ListView更好,能够显示列表、网格、瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能。
但是使用起来会稍微麻烦一点,并且没有类似ListView的onItemClickListener监听事件,需要开发者自己实现。
WebView
加载网页
- 加载URL(网络或者本地assets文件夹下的html文件)
加载网络URL
webview.loadUrl(“xxx”);
加载assets下的html’文件
webview.loadUrl(“xxx”)
- 加载html代码
webview.loadData();
webview.loadDataWithBaseURL();
- Native和JavaScript相互调用

//加载本地URL
mWvMain.loadUrl(“file:///android_asset/hello.html”);

//加载网络URL
mWvMain.getSettings().setJavaScriptEnabled(true);
mWvMain.loadUrl(“https://m.baidu.com”);

本文介绍了安卓开发中的几种重要视图组件,包括列表视图、网格视图、ScrollView及其子类HorizontalScrollView,强调了RecyclerView在大数据展示和视图复用上的优势,以及WebView在加载网页和实现Native与JavaScript交互的功能。
2297

被折叠的 条评论
为什么被折叠?



