草庐IT

安卓滑动面板

coder 2023-12-17 原文

我正在尝试启动一个应用程序,但我有点迷失了如何做我想做的事。

这就是我想要的

两个红色面板都应该能够滑动到两侧,如果其中一个(或两个)折叠并占据该面板空间,白色面板应该展开。 当我在屏幕上显示红色面板时,白色面板显示所有内容并且不在任何面板下方。

到目前为止我尝试了什么: 我开始尝试使用两个 SlidingDrawer,但是白色面板在红色面板后面,所以,运气不好。 之后,我尝试使用 2 个 LinearLayouts(红色面板)和一个 RelativeLayout(白色面板),并尝试使用按钮更改布局的宽度(就像在图像上最佳)。这总是导致我不知道如何解决的问题。

建议?

编辑: SlidingDrawer 示例的 xml:

<LinearLayout 
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:gravity="bottom" 
android:background="#FFFFFFFF">
<SlidingDrawer 
    android:layout_width="100dip" 
    android:id="@+id/SlidingDrawer" 
    android:handle="@+id/slideHandleButton" 
    android:content="@+id/contentLayout" 

    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <LinearLayout 
        android:layout_width="wrap_content" 
        android:id="@+id/contentLayout" 
        android:orientation="horizontal" 

        android:background="#C0C0C0" 
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Meio"
            android:layout_toRightOf="@+id/buttonEsq" />
    </LinearLayout>
    <Button 
        android:layout_width="30dip" 
        android:layout_height="30dip" 
        android:id="@+id/slideHandleButton" 
        android:background="@drawable/arrowup">        
    </Button>
</SlidingDrawer>
</LinearLayout>

LinearLayout 示例的 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

    <RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"                
    android:orientation="horizontal"
    android:layout_toLeftOf="@+id/linearLayout3"
    android:layout_toRightOf="@+id/linearLayout1"
    android:background="#FFFFFFFF">
    <Button
        android:id="@+id/buttonEsq"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"


        android:text="v--" />
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Meio"
        android:layout_toRightOf="@+id/buttonEsq" />

    <Button
        android:id="@+id/buttonDir"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_toRightOf="@+id/textView1"
        android:text="--v" />
</RelativeLayout>
<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="50dip"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"


    android:background="#FFFF0000">
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Esquerda" />
</LinearLayout>



<LinearLayout
    android:id="@+id/linearLayout3"
    android:layout_width="50dip"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"



    android:background="#FFF00000">
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Direita" />
</LinearLayout>

</RelativeLayout>

android代码(注释部分为第一个例子的代码):

public class Main extends Activity {
Button slideHandleButton;
Button slideHandleButtonLeft;
Button slideHandleButtonRight;
SlidingDrawer slidingDrawer;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.mainlayouts);
/*  slideHandleButton = (Button) findViewById(R.id.slideHandleButton);
    slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer);

    slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
        @Override
        public void onDrawerOpened() {
            slideHandleButton.setBackgroundResource(R.drawable.arrowdown);
        }
    });

    slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
        @Override
        public void onDrawerClosed() {
            slideHandleButton.setBackgroundResource(R.drawable.arrowup);
        }
    });*/
    slideHandleButtonLeft = (Button) findViewById(R.id.buttonEsq);
    slideHandleButtonLeft.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            LinearLayout lll = (LinearLayout) findViewById(R.id.linearLayout1);
            RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(50, LinearLayout.LayoutParams.FILL_PARENT);              
            lll.setLayoutParams(params);            
        }
    }); 
}
}

最佳答案

SlidingDrawer只能从右侧或底部滑入,无法从顶部或左侧滑入。你可以试试这个问题的答案:Android SlidingDrawer from top?或者你可以尝试重写源代码 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/SlidingDrawer.java .

但是,SlidingDrawer 不允许

the white panel show all the content and not be under any of the panels

因为它将滑过白色面板

我能想到的唯一解决方案是使用一系列缩放/平移,将左面板或右面板平移到屏幕外并将可见性设置为消失,同时将中心面板向外缩放正在删除红色面板。

我前段时间尝试制作一个类似的原型(prototype)并使用了这种方法,但缩放动画看起来很糟糕,更不用说 onAnimationEnd 监听器不起作用,你必须扩展 LinearLayout 并在那里覆盖 onAnimationEnd 才能工作。

关于安卓滑动面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140553/

有关安卓滑动面板的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  3. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

  4. ruby-on-rails - Rails 替代 Django 管理面板/CRUD View 生成器? - 2

    我目前正在尝试在Rails和Django之间做出决定。目前我发现ruby​​更优雅,所以我考虑Django的唯一原因是管理面板..我没有任何经验,但我必须在截止日期前快速开发应用程序。Rails中是否有一种方法可以根据您的模型(如django中的管理面板)为您的所有CRUD操作生成一组(接近生产就绪的)View?(即它会查看您的模型并看到您有一个属于某个组的人,并在创建人员View上为该组生成一个下拉列表)?如果不是,那是获得所有CRUDView初稿的最快方法(无需手动编写)?谢谢,丹尼尔 最佳答案 有趣的工具http://acti

  5. javascript - 如何获得这种淡入淡出和滑动效果? - 2

    我想知道如何制作像这样的淡入淡出和滑动效果:http://www.apple.com/stevejobs/这是一个非常酷的动画,我想知道这是否可以用jQuery实现?注意:我已经知道如何淡入淡出。我一直使用jQuery。我想要新评论/内存/想法下降的效果。它向下滑动并同时消失。 最佳答案 淡化只是他们在元素上应用的一些CSS:来自messages.css(第81行)#messages#messageContainer#mask{background:-moz-linear-gradient(centertop,rgba(255,25

  6. javascript - ExtJS:什么是检测网格数据更改的网格面板事件 - 2

    我有一个GridPanel,在工具栏中我有两个按钮“拒绝更改”和“保存更改”。下面的代码显示了每个按钮的作用,到目前为止一切正常。Ext.define('APP.view.MyGrid',{extend:'Ext.grid.Panel',...initComponent:function(){varme=this;me.store=myStore;me.plugins=[Ext.create('Ext.grid.plugin.CellEditing',{clicksToEdit:1,autoCancel:false}),];me.rejectBtn={xtype:'button',id

  7. javascript - 没有 Bootstrap 面板标记的 Bootstrap Accordion - 2

    是否有任何可行的方法可以在不使用“面板”标记的情况下创建自举Accordion控件?我有折叠控件,但我希望能够为控件中的每个部分定位父级。换句话说,我希望“收入”和“利润”桶相互切换,并且“收入”内部有“收入当前”、“收入基础”和“收入当前与基础”相互切换其他不干扰父层。http://jsfiddle.net/Lp903gc5/标记RevenueRevenueCurrentExtendedZonePriceNetAmountRevenueRevenueShareatDNRevenueBaseExtendedZonePriceNetAmountRevenueRevenueShareatD

  8. javascript - 如何在 ExtJS 面板的标题中放置下拉菜单? - 2

    我可以像这样将文本和图像等HTML元素放在面板标题中:vargrid=newExt.grid.GridPanel({region:'center',style:'margin:10px',store:newExt.data.Store({data:myData,reader:myReader}),headerCfg:{tag:'div',cls:'x-panel-header',children:[{tag:'div',cls:'panel_header_main','html':'ShoppingCart'},{tag:'div',cls:'panel_header_icon1','

  9. javascript - 在移动网站中处理 iPhone 事件(如向左滑动) - 2

    iPhone浏览器是否有我可以使用Javascript连接的特殊事件?例如,如果用户向左滑动,我想执行某个操作。如果有这样的事件可用,很高兴看到所有这些事件的引用。理想情况下,有一天会出现适用于所有触摸屏移动浏览器的标准。 最佳答案 您可以访问多点触控事件和手势,但您可能需要自己处理大量的底层管道。这是Apple的指南:https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/Handl

  10. Javascript 库或 jquery 插件,用于在移动 safari/ipad 中创建基于滑动的轮播 - 2

    你看过yahoo的ipad/tablet主页吗?浏览标题的滑动效果令人印象深刻。我在jquery中看到了一些解决方法(使用循环插件+touchwipe插件),但这些都只是检测用户手势然后运行​​x-绝对位置动画,而不是实际跟踪用户的手势。知道类似于雅虎的解决方案吗? 最佳答案 找到解决方案:http://cubiq.org/iscroll-4使用“对齐”选项重新创建轮播效果。 关于Javascript库或jquery插件,用于在移动safari/ipad中创建基于滑动的轮播,我们在Sta

随机推荐