本文介绍了导航抽屉里,连动作条,机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现导航抽屉没有任何动作条。
我在主要布局的顶部有一个小的布局,看起来像下面

我想,当我会按一下按钮抽屉式导航栏将根据小(彩色)的布局出现。
我曾尝试用一些例子,但抽屉里总是出现这样的

但我想,导航抽屉将根据小版面,而不是从顶部出现。
我想是这样的:

我怎样才能做到这一点?

我试过的例子的XML文件:

 < android.support.v4.widget.DrawerLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:ID =@ + ID / drawer_layout
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent>    <! - 布局中的第一个孩子是主要活动的用户界面 - >    < RelativeLayout的
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:背景=#FFFFFFFF
        机器人:paddingBottom会=@扪/ activity_vertical_margin
        机器人:paddingLeft =@扪/ activity_horizo​​ntal_margin
        机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
        机器人:paddingTop =@扪/ activity_vertical_margin
        工具:上下文=MainActivity。>        < RelativeLayout的
            机器人:ID =@ + ID /动作条
            机器人:layout_width =match_parent
            机器人:layout_height =50dp
            机器人:layout_alignParentTop =真
            机器人:背景=#0f9d58>
        < / RelativeLayout的>        < RelativeLayout的
            机器人:ID =@ + ID /日程地址搜索Maincontent
            机器人:layout_width =match_parent
            机器人:layout_height =50dp
            机器人:layout_below =@ ID /动作条
            机器人:背景=#0f9d58>            <按钮
                机器人:ID =@ + ID / actionBarButton
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:文字=点击/>            <的TextView
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_centerHorizo​​ntal =真
                机器人:layout_marginTop =100dp
                机器人:比重=中心
                机器人:文字=神圣的操作系统,Batdroid!
                机器人:TEXTSIZE =24sp/>            < ImageView的
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_alignParentBottom =真
                机器人:layout_centerHorizo​​ntal =真/>
        < / RelativeLayout的>
    < / RelativeLayout的>    <! - 侧导航抽屉UI - >    < ListView控件
        机器人:ID =@ + ID / navList
        机器人:layout_width =200dp
        机器人:layout_height =match_parent
        机器人:layout_below =@ ID /动作条
        机器人:layout_gravity =左|启动
        机器人:背景=#ffeeeeee/>< /android.support.v4.widget.DrawerLayout>

和的主要活动是:

 公共类MainActivity延伸活动{    私人的ListView mDrawerList;
    私人ArrayAdapter<串GT; mAdapter;
    按钮actionBarButton;
    布尔buttonStateOpen;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        buttonStateOpen = FALSE;        最后DrawerLayout抽屉=(DrawerLayout)findViewById(R.id.drawer_layout);        mDrawerList =(ListView控件)findViewById(R.id.navList);        addDrawerItems();
        actionBarButton =(按钮)findViewById(R.id.actionBarButton);
        actionBarButton.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(查看为arg0){
                // TODO自动生成方法存根
                如果(buttonStateOpen == FALSE)
                 {
                    drawer.openDrawer(Gravity.LEFT);
                    buttonStateOpen = TRUE;
                 }
                否则,如果(buttonStateOpen ==真)
                {
                    drawer.closeDrawer(Gravity.LEFT);
                    buttonStateOpen = FALSE;
                }
            }
        });
        mDrawerList.setOnItemClickListener(新AdapterView.OnItemClickListener(){            @覆盖
            公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
                    长ARG3){
                // TODO自动生成方法存根
                 Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT时间升级!).show();
            }
        });
    }    私人无效addDrawerItems(){
        的String [] = osArray {机器人,iOS版,窗口,OS X,Linux的};
        mAdapter =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,osArray);
        mDrawerList.setAdapter(mAdapter);
    }}


解决方案

if You have Fixed height of your layout the you can set that much of margin from top to ListView

use this method to calculate the height of your RelativeLayout

then

ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
 viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
  view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
  viewWidth = view.getWidth();
  viewHeight = view.getHeight();
}
 });
}

then use this to set Runtime margin to ListView from top

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);

这篇关于导航抽屉里,连动作条,机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-16 04:55