Android中的DrawerLayout的简单用法

在Android开发中我们有时候会用到侧滑,其功能使用DrawerLayout实现的。它实现了app中的侧滑菜单功能,此对象属于android.support.v4包中的一个布局对象,在使用此对象时必须将此元素设置为xml布局的根元素,这个根元素内容只能有两个直接的view子元素,其中一个是侧滑,一个是主体内容。

首先在xml文件中:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawerId"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >


    <!-- 第一个子元素为主体内容区 -->


    <FrameLayout
        android:id="@+id/contentId"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >


        <TextView
            android:id="@+id/textId"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textSize="30sp" />
    </FrameLayout>
    <!-- 侧滑view -->


    <LinearLayout
        android:id="@+id/leftId"
        android:layout_width="230dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#fffffccc"
        android:orientation="vertical" >


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ff669900" >


            <ImageView
                android:id="@+id/imageId"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_launcher" />


            <TextView
                android:id="@+id/nameId"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toEndOf="@id/imageId"
                android:text="android" />
        </RelativeLayout>


        <ListView
            android:id="@+id/leftLstId"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>


</android.support.v4.widget.DrawerLayout>


在MainActivity中:

package com.example.day08;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends Activity {


private DrawerLayout drawer;
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView) findViewById(R.id.textId);
drawer=(DrawerLayout) findViewById(R.id.drawerId);
setLeftListView();
}
private List<ListItem> list=new ArrayList<ListItem>();
private void setLeftListView(){
initListViewData();
ListView lsv=(ListView) findViewById(R.id.leftLstId);
ArrayAdapter<ListItem> adapter=
new ArrayAdapter<ListItem>(this,-1,list){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//设置每个textview的内容
TextView textview=(TextView) View.inflate(getContext(),android.R.layout.simple_list_item_1,null);
ListItem item=list.get(position);
textview.setText(item.getName());
//在textview左侧放一张图片
Drawable left=getResources().getDrawable(item.getLogo());
left.setBounds(0, 0, 50, 50);
textview.setCompoundDrawables(left, null, null, null);
return textview;
}
};
lsv.setAdapter(adapter);
lsv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
text.setText(parent.getItemAtPosition(position).toString());
drawer.closeDrawer(Gravity.START);
}
});
}
private void initListViewData(){
list.add(new ListItem("A", android.R.drawable.ic_menu_help));
list.add(new ListItem("B", android.R.drawable.ic_menu_search));
list.add(new ListItem("C", android.R.drawable.ic_menu_crop));
}
class ListItem{
String name;
int logo;
public ListItem(String name,int logo) {
this.name=name;
this.logo=logo;
}
public int getLogo() {
return logo;
}
public String getName() {
return name;
}
}
}

将鼠标放在左侧向右滑动就可看到设置的DrawerLayout啦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值