废话不多说,先看下效果:

这个就是类似抽屉的效果,这边做了三个抽屉,点击抽屉既可打开,同时关闭其他抽屉。

有人猜到怎么做的了吗?

其实很简单,就是三个 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好友分组实现相关推荐

  1. Android之实现QQ好友分组(ExpandableListView)

    在项目开发中,也许我们遇到过ListView中嵌套ListView,但谷歌建议我们最好别这样做,因此他们写好了一个ExpandableListView类,他继承ListView,可以实现ListVie ...

  2. expandableListview的使用,模仿qq好友分组点击收缩扩展

    我主要讲述的是用listview实现.模仿qq好友分组点击收缩.扩展功能 这个是对listview的拓展,用法比较相似,还是需要一个适配器 MainActivitypublic class MainA ...

  3. 猜想 QQ好友分组 (微信好友)多层次分组策略 QQ好友过多

    猜想 QQ好友过多 QQ好友分组 (微信好友)多层次分组策略  问题: 在QQ好友比较多的好友分组,一大堆不同的好友简单的堆叠在一起,翻看一次一个分组里数百个的好友要花费较长的时间,而且一大排头像文字 ...

  4. IOS 实现QQ好友分组展开关闭功能

    贴出核心代码  主要讲一下思路. - (void)nameBtnClick:(myButton *)sender { //获取当前点击的分组对应的section self.clickIndex = s ...

  5. Qt可拖拽排序表格(类似QQ好友分组排序)

    1,简介 为了最佳体验,一个拖拽行排序的功能研究了几个小时.效果参考的QQ好友分组的排序. 网上查了下好像没有人发布QT版类似的代码,于是自己动手 QQ好友分组排序效果: 2,效果 这是最终效果图,有 ...

  6. QQ好友分组模拟小程序

    QQ好友分组:一个好友组里有多个好友,一个好友只能选择一个组,这样好友组和好友之间就是一个一对多的关系.在此程序中封装一个好友类即Buddy类,一个组类即Group类.在Buddy类有有关好友的最基本 ...

  7. js实现qq好友分组

    qq好友分组 <style>ul,h2 {padding: 0;margin: 0;background-color: wheat;}li {list-style: none;}#list ...

  8. 模仿QQ好友分组风格

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <title> ...

  9. UITableView的折叠收缩和QQ好友分组效果

    可折叠展开的tableView,QQ好友分组列表 demo下载地址https://github.com/zhengwenming/ExpandTableView   原理分析:这个可以折叠的table ...

最新文章

  1. 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!
  2. bzoj 2653 middle (可持久化线段树)
  3. BUUCTF-WEB:[强网杯 2019]随便注 1
  4. 备战“双11”,阿里云为企业提供一站式资源保障服务
  5. 在myeclipse中建立maven项目
  6. 数据挖掘 点击更多 界面_8(更多)技巧,可快速改善用户界面
  7. 高程数据处理_珠峰长高了吗?新高程怎么算出来的?揭秘
  8. 浏览器中插入富文本编辑器
  9. Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析
  10. SQLServer无法使用特殊主体'sa'的解决
  11. html使用最ie高版本,从html,css,javascript三方面谈谈“浏览器兼容性”的问题
  12. android porting usb audio,android - 在android中启动时找不到audio-hal-2-0 - 堆栈内存溢出...
  13. 移动端日期控件 mobiscroll
  14. 求解偏微分方程开源有限元软件deal.II学习--Step 4
  15. Bootstraphead里的内容
  16. 计算机二级C语言题库(60套真题+刷题软件)2022年9月份新题第一套
  17. fiddler响应中文乱码问题
  18. C#编程--ribbon界面介绍
  19. linux hd4000显卡驱动,AMD 即将放弃 Radeon HD2000/3000/4000 系列显卡的驱动支持
  20. MFiX存储ReactionRates的模块

热门文章

  1. 英汉互译在线翻译-英文翻译中文的翻译
  2. frame切换、多窗口切换
  3. git撤销commit
  4. (7)解除预制体关系Break Prefab Instance(Unpack Prefab)
  5. 警告:Named Route ‘Main‘ has a default child route. When navigating to this named route
  6. 程序员如何更换证件照背景色
  7. 中央农村工作会议释放重要信号,AI 技术助力农业的十种路径,未来可期
  8. Three.js学习七——播放模型动画时模型沿着轨迹移动
  9. 2022年河南省高职单招(综合素质)考试冲刺试题及答案
  10. 燕大计算机研究生毕业待遇,研究生人均“月薪上万”是真是假,过来人坦言:想想就好,别认真...