Android - 创建可调整大小的视图

2023-12-25

我目前正在开发一个具有可移动和可调整大小视图的仪表板。我现在遇到的问题是我想通过触摸手势调整视图大小。因此,我想到了一个点,将其添加到选择视图中,可以拖动该点来调整所选视图的大小。这与 Android 主屏幕上的调整大小过程类似。

即使经过长时间的研究,我也无法想出如何覆盖另一个具有自己的 DragListener 的视图的解决方案。我可以想象将选定的视图和点放入一个 ViewGroup 中,并使点覆盖视图。有人有解决这个问题的经验吗?先感谢您。


尝试跟随课程。

package mayank.com.bhaktirasamritaswami.ui.components;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
import mayank.com.bhaktirasamritaswami.R;
public class ResizableLayout extends RelativeLayout implements View.OnTouchListener{
public static int top_margine;
public ResizableLayout(Context context) {
    super(context);
    init();
}
public ResizableLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public void init(){
    addView(inflate(getContext(), R.layout.ui_component_resizable_layout,null));
    setOnTouchListener(this);
    dragHandle = this.findViewById(R.id.drag_handle);
}

private View dragHandle;
float downRawY;
float dY;
float height;

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    int action = motionEvent.getAction();
    if(action == MotionEvent.ACTION_DOWN){
        downRawY = motionEvent.getRawY();
        height = this.getMeasuredHeight();
    } else {
        View parent = (View) this.getParent();
        if(downRawY<parent.getHeight() - height + 2*dragHandle.getHeight()) {
            float rawY = motionEvent.getRawY()>20*dragHandle.getHeight()?motionEvent.getRawY():20*dragHandle.getHeight();
            MarginLayoutParams p = (MarginLayoutParams) this.getLayoutParams();
            p.topMargin = (int)rawY;
            if(p.topMargin!=0)
                this.top_margine = p.topMargin;
            this.setLayoutParams(p);
        }
    }
    return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent motionEvent){
    onTouch(this, motionEvent);
    return false;
}
}

我设计这个类仅用于垂直调整大小。您需要更改 onTouch 方法以适合您的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 创建可调整大小的视图 的相关文章

随机推荐

  • Android 资源 ID 突然不是最终的,字段无法解析

    我正在开发一个新旧项目 我正在为不同的国家 地区市场制作它 当我从旧项目复制代码时 它显示一些错误 例如迁移 ANDROID 代码 从 ADT 14 开始 资源字段不能用作 switch case 这种情况发生在 strings xml 文
  • 如何在 Ruby 中创建 OpenGL 3.x 或 4.x 上下文?

    我到处都找过了 但没有任何 ruby 绑定可以允许创建 OpenGL 3 4 上下文 它不必是完整的 OpenGL 绑定库 只需创建 OpenGL 上下文的部分即可 更新 如果我足够绝望 我会用 ruby ffi 进行部分 glfw rub
  • 位置:固定边距:IE9/10 中自动

    我为响应式网站制作了一个粘性标题 其中标题也以margin 0 auto 它适用于 Chrome Firefox Safari IE8 但不适用于 IE9 最小标记 div class viewport div
  • 如何在微控制器上运行opencv?

    我对电子领域和控制器了解很多 但我想知道如何将opencv程序与红色交通灯结合起来 我知道答案是微控制器 但我只知道有一个编译器AVR 它可以将C编译为十六进制 然后与微控制器一起工作 但 OpenCV 我想我不会在 C 上运行 是高级别的
  • 动画选择器/状态转换

    我的 ListView 有一个简单的选择器
  • 将 Visual Studio 项目文件解析为 XML

    使用动态 xml 解析器 我尝试将 VS 项目文件作为 XElement 加载 这是项目文件的精简版本
  • 如何将数据从blob存储复制到VM?

    是否可以将 Azure Blob 存储中存在的文件复制到 Azure 虚拟机 在浏览了 Azure 数据工厂文档后 数据管理网关似乎提供 文件系统 作为数据接收器 但我无法找到任何相关文档 教程 谁能告诉我这是否可能吗 如果可以的话 可以怎
  • 将 HTML 画布裁剪为其可见像素(内容)的宽度/高度?

    可以 HTMLcanvas元素被内部裁剪以适应其内容 例如 如果我有一个 500x500 像素的画布 其中的随机位置只有一个 10x10 像素的正方形 是否有一个函数可以通过扫描可见像素和裁剪将整个画布裁剪为 10x10 Edit 这被标记
  • 如何在黑莓应用程序中显示饼图[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何使用 rim api 在黑莓应用程序中显示饼图 rim api 中是否有可用的控件或者如何实现 有人可以通过分享代码片段来帮助我吗 Go
  • 旋转后找到矩形的顶点

    所以我承认我真的不知道如何表达这个问题 但完整的解释应该有助于阐明一些情况 这是我所知道的 我在 HTML5 Canvas 上绘制了一个矩形 我知道所有 4 个角的点以及宽度和高度 由此我可以计算出中点 我想知道的是 如果我将矩形旋转 n
  • iptables 阻止本地连接到 mongodb

    我有一个带有 mongodb 2 0 4 的虚拟机 Ubuntu 12 04 4 LTS 我想用 iptables 限制它只接受 SSH 输入 输出 而不接受其他任何东西 这就是我的设置脚本设置规则的方式 bin sh DROP every
  • 使用区间来分配分类值

    获取以下通用数据 A lt c 5 7 11 10 23 30 24 6 B lt c 1 2 3 1 2 3 1 2 C lt data frame A B 以及以下间隔 library intervals interval1 lt In
  • 一列中的多个图表区域

    I have a chart with multiple chart areas When I press a button a new chart area is being created etc My problem is that
  • 当一列中的单元格与另一列中的单元格不匹配时更改它们的颜色

    我想检查一列中的值是否与另一列中的值相同 每当值不相同时 我想更改这些单元格的颜色 例如 I 栏 AA 栏 两者的值都是从 1318 年到 1500 年的第一个月 阿拉伯历 但我想检查其中哪些值不匹配 例如用黄色将它们着色 在这种情况下 第
  • 信息检索中的语言模型

    我在 IR 工作 任何人都可以指导我 我该如何实现语言模型Whoosh 我已经应用了TD IDF和BM25 我是红外新手 例如 最简单形式的语言模型只是丢弃所有条件上下文 并独立估计每个术语 这样的模型称为一元语言模型 P uni t 1t
  • Ubuntu 20.04升级,Python缺少libffi.so.6

    我最近将操作系统升级到 Ubuntu 20 04 LTS 现在 当我尝试在 Python 中导入 Numpy 等库时 出现以下错误 ImportError libffi so 6 cannot open shared object file
  • 在 ASP.NET 中模拟会员用户

    在一个通用的asp net网站与Membership Roles并启用哈希密码 我想向管理员提供impersonation以便他们可以浏览该网站that用户会的 该网站应该像该用户登录一样运行 然后能够恢复到他们自己的登录状态 实现这一目标
  • 具有环境变量和可重写 CMD 的 ENTRYPOINT

    这允许 ENV VAR传递给foo ENTRYPOINT usr bin foo ENV VAR 这不会 因为传递的是文字字符串 ENV VAR 而不是环境变量的内容 ENTRYPOINT usr bin foo ENV VAR 这允许覆盖
  • Android 获取 Wifi 连接状态

    我目前正在使用NetworkRequest and NetworkCallback方法 谷歌官方推荐 获取Wifi连接状态 并且部分有效 我期待着onUnavailable 将在以下情况下被调用 close app gt turn off
  • Android - 创建可调整大小的视图

    我目前正在开发一个具有可移动和可调整大小视图的仪表板 我现在遇到的问题是我想通过触摸手势调整视图大小 因此 我想到了一个点 将其添加到选择视图中 可以拖动该点来调整所选视图的大小 这与 Android 主屏幕上的调整大小过程类似 即使经过长