废话不多说,先看下效果:
这个就是类似抽屉的效果,这边做了三个抽屉,点击抽屉既可打开,同时关闭其他抽屉。
有人猜到怎么做的了吗?
其实很简单,就是三个 TextView + 三个Layout。 关键就在于控制Layout的显示、消失。同时也要注意Layoout的权重值weight。
下面看一下代码吧。
页面 main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/tv01" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/label1"
android:background="@drawable/line" android:clickable="true" />
<LinearLayout android:id="@+id/layout1"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="内容1" />
</LinearLayout>
<TextView android:id="@+id/tv02" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/label2"
android:background="@drawable/line" android:clickable="true" />
<LinearLayout android:id="@+id/layout2"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="内容2" />
</LinearLayout>
<TextView android:id="@+id/tv03" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/label2"
android:background="@drawable/line" android:clickable="true" />
<LinearLayout android:id="@+id/layout3"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="0">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="内容3" />
</LinearLayout>
</LinearLayout>
Java代码,就一个类:
package com.yfz;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
public class QQ extends Activity {
private TextView tv1;
private TextView tv2;
private TextView tv3;
private LinearLayout layout1;
private LinearLayout layout2;
private LinearLayout layout3;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupView();
}
private void setupView() {
tv1 =(TextView) findViewById(R.id.tv01);
tv2 =(TextView) findViewById(R.id.tv02);
tv3 =(TextView) findViewById(R.id.tv03);
layout1 = (LinearLayout)findViewById(R.id.layout1);
layout2 = (LinearLayout)findViewById(R.id.layout2);
layout3 = (LinearLayout)findViewById(R.id.layout3);
tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
layout3.setVisibility(View.GONE);
}
});
tv2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
layout3.setVisibility(View.GONE);
}
});
tv3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.GONE);
layout3.setVisibility(View.VISIBLE);
}
});
}
}
Demo程序中考虑将抽屉都放在上面,所以最后一个Layout的权重最高:android:layout_weight="0" ;
另外注意,Layout的android:layout_height属性都必须是wrap_content。 用fill_parent就没戏啦!
如果有人想要讲抽屉放在最下面,那么局部文件需要小改一下。
1. 换一下TextView 和 Layout的位置
2. 讲最上面的Layout的权重设为最高
分享到:
相关推荐
Android仿QQ好友列表分组实现增删改及持久化Demo
自定义ExpandeListView,仿qq好友分组,头像可动态加载。头像资源位于Asset文件夹下,可更改为异步加载网络图片,真正实现动态加载。
Android 仿QQ好友分组列表,ExpandableListView的使用详解demo,内含源码及apk文件
使用expandablelistview实现qq好友分组的功能,代码挺简单的,有注释
因为ListView只能显示一级列表,如果实现像QQ好友列表那样的效果,就需要用到ExpandableListView,入门新手可能对该控件不是很熟悉,通过本Android源码你将了解一下基本用法,其实跟ListView差不多。 注:测试时...
主要介绍了Android仿QQ好友列表分组实现增删改及持久化的相关资料,需要的朋友可以参考下
Android UI仿QQ好友列表分组悬浮效果,并且还有刷新的功能
模仿QQ好友列表的ExpandableListView实现的效果 现在已实现一个封装好的类出来,只需要把此控件放到RelativeLayout容器中,然后在其Adapter的自定义对象中实现一个HideGroup方法。就可以在Activity里不使用代码实现...
public String[] groups = { "我的好友", "新疆同学", "亲戚", "同事" }; public String[][] children = { { "胡算林", "张俊峰", "王志军", "二人" }, { "李秀婷", "蔡乔", "别高", "余音" }, { "摊派新...
文档介绍:https://blog.csdn.net/qq_34060370/article/details/123098577 ...好友模块:好友列表、好友添加、好友删除、好友移动分组、好友资料 聊天模块:发送接受消息 动态模块:查看好友的动态、发表自己的动态
类似于QQ的点击查看分组的好友,这是一个简单的demo
此资源是用MyExpandableListView仿照qq的好友列表做的,分组中每组是按照拼音的序号排列的,里面的项也是按照拼音的序号排列的!!
好友QQ列表,可以展开,可以收起,在android中,以往用的比较多的是listview,虽然可以实现列表的展示,但在某些情况下,我们还是希望用到可以分组并实现收缩的列表,那就要用到android的ExpandableListView,今天...
这是类似于QQ分组的一个android通讯录分组管理,并点击个人可以编写该人信息,还可以搜索好友,是个很不错的例子
类似于QQ好友分组,可展开,收缩,上下滑动
这不同于列表视图,允许两个层次,类似于QQ的好友分组。要实现这个效果的整体思路为: 1.要给ExpandableListView 设置适配器,那么必须先设置数据源。 2.数据源,就是此处的适配器类,此方法继承了...
本项目源码就是一套仿QQ好友列表的通讯录项目源码。长按分组可以出现分组信息的增删改和联系人的新增选项,长按联系人可以出现联系人的删除编辑和移动选项。点击联系人头像右边的箭头按钮可以出现发邮件、短信和打...