一、简介
基于QQ、微信等对话框进行的小实验,如下图
效果图:顶部首页通讯字段可横向滑动,列表上下滑动。
二、代码
scrollview.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<HorizontalScrollView
android:id="@+id/hscrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
tools:ignore="MissingConstraints">
<LinearLayout
android:id="@+id/line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="首页 "
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="通讯"
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="首页 "
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="通讯"
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="首页 "
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="通讯"
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="首页 "
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="通讯"
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="首页 "
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/purple_500"
android:text="通讯"
android:textColor="@color/white" />
</LinearLayout>
</HorizontalScrollView>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/line1">
</ListView>
</LinearLayout>
listview_item.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp">
<ImageView
android:id="@+id/item_img"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/three"/>
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="陆逊"
android:layout_toRightOf="@+id/item_img"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:textSize="20sp"
android:textColor="@color/red"/>
<TextView
android:id="@+id/item_sign"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item_name"
android:layout_alignLeft="@+id/item_name"
android:layout_marginTop="20dp"
android:text="你愁啥,小心我打你啊!"
android:textColor="@color/purple_700"
android:textSize="15sp" />
</RelativeLayout>
scrollview.java:
private List<ThreeKill> list;
private ThreeKill threeKill;
private MyAdapter adapter;
private ListView listView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scrollview);
initaction();
adapter = new MyAdapter(this, list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
threeKill = list.get(i);
Toast.makeText(Scrollview.this, threeKill.getName() + "\n" + threeKill.getSign(), Toast.LENGTH_SHORT).show();
}
});
}
/**
* 初始化
*/
private void initaction() {
listView = findViewById(R.id.listview);
list = new ArrayList<ThreeKill>();
list.add(new ThreeKill(R.drawable.three, "曹操", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "曹仁", "宁我负天下人。"));
list.add(new ThreeKill(R.drawable.three, "曹植", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "曹爽", "宁我负天下人。"));
list.add(new ThreeKill(R.drawable.three, "曹丕", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "赵云", "宁我负天下人。"));
list.add(new ThreeKill(R.drawable.three, "张飞", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "关羽", "宁我负天下人。"));
list.add(new ThreeKill(R.drawable.three, "吕布", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "刘备", "宁我负天下人。"));
list.add(new ThreeKill(R.drawable.three, "马超", "宁我负天下人,勿让天下人负我。"));
list.add(new ThreeKill(R.drawable.three, "黄忠", "宁我负天下人。"));
}
自定义Adapter继承自BaseAdapter:MyAdapter.java
public class MyAdapter extends BaseAdapter {
private Context context;
private List<ThreeKill> list;
public MyAdapter(Context context, List<ThreeKill> list) {
this.context = context;
this.list = list;
}
@Override
//填充的item的个数
public int getCount() {
return list.size();
}
@Override
//指定索引对应的item的数据项
public Object getItem(int position) {
return null;
}
@Override
//指定索引对应的item的id值
public long getItemId(int position) {
return 0;
}
@Override
//填充每个item的内容
public View getView(int position, View convertView, ViewGroup viewGroup) {
View view = null;
ViewHolder viewHolder = null;
if (view == null){
view = LayoutInflater.from(context).inflate(R.layout.listview_item,null);
viewHolder = new ViewHolder();
viewHolder.img = view.findViewById(R.id.item_img);
viewHolder.name = view.findViewById(R.id.item_name);
viewHolder.sign = view.findViewById(R.id.item_sign);
view.setTag(viewHolder);
}else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.img.setImageResource(list.get(position).getImg());
viewHolder.name.setText(list.get(position).getName());
viewHolder.sign.setText(list.get(position).getSign());
return view;
}
}
//存放item中的所有控件
class ViewHolder{
ImageView img;
TextView name;
TextView sign;
}
ThreeKill .java
public class ThreeKill {
private int img;
private String name;
private String sign;
public ThreeKill(int img, String name, String sign) {
this.img = img;
this.name = name;
this.sign = sign;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
}
列表的点击事件:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
threeKill = list.get(i);
Toast.makeText(Scrollview.this, threeKill.getName() + "\n" + threeKill.getSign(), Toast.LENGTH_SHORT).show();
}
});
如图:
还有一些其他的关于滑动的布局及做法,这只是发动布局的最常用的一种。
版权声明:本文为Alan_lzy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。