Android之原始的QQ好友分组实现

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

 

 

 

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

 

有人猜到怎么做的了吗?

 

其实很简单,就是三个 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的权重设为最高

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值