android-Android setLayoutParams()的问题

问题描述

Android setLayoutParams()的问题

想知道在代码中通过getLayoutParams()得到一个View的LayoutParams,然后修改之后一定要通过set方法才能生效吗?比如修改了Width属性?

下面是学习的时候看到的代码,这个方法没有set啊,这是怎么回事呢

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initValues();
        content.setOnTouchListener(this);
    }

    private void initValues() {
        WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        window.getDefaultDisplay().getMetrics(dm);
        screenWidth=dm.widthPixels;

        content = findViewById(R.id.content);
        menu = findViewById(R.id.menu);
        menuParams = (LinearLayout.LayoutParams) menu.getLayoutParams();

       // 将menu的宽度设置为屏幕宽度减去menuPadding
        menuParams.width = screenWidth - menuPadding;
        // 左边缘的值赋值为menu宽度的负数
        leftEdge = -menuParams.width;
        // menu的leftMargin设置为左边缘的值,这样初始化时menu就变为不可见
        menuParams.leftMargin = leftEdge;
        // 将content的宽度设置为屏幕宽度
        content.getLayoutParams().width = screenWidth;
    }

解决方案

对,需要从新set,不然布局不会更新的。

解决方案二:

android一般在java代码中修改控件各种View(比如TextView,EditextView,Button等)的各种属性都会有setXXX方法去修改相应的属性,

解决方案三:

java有2种类型,一种基本类型,一种引用类型,引用类型修改后就已经改变了所引用的东西,也就是说如果没有重新构造,那就改变了引用的对象

时间: 2024-09-13 00:21:38

android-Android setLayoutParams()的问题的相关文章

效果-Android Android 拖拽拼图功能的实现!!急!!在线等!急!

问题描述 Android Android 拖拽拼图功能的实现!!急!!在线等!急! 我要的效果是 比如我在左边选择了第一个模版,然后我拖拽到右边工作区域,松开放下,然后我在去左边选择模版,比如我在选择第一个模版,又拖动右边,比如我我放在我第一个的左边,这是要注意了,这2个图片不能重叠在一起!!如果我觉得第二个没放好!我可以在点击让他消失,在去左边选择一个模版,拖过来拼在上下左右的位置!!! 小弟先谢过各位了!! 有实例代码最好!!给小弟思路小弟也感激不尽!! 解决方案 在电脑中处理不行吗? 解决

[android]android自动化测试十之单元测试实例

android源代码中每个app下中都自带了一个test用例,下面主要介绍下camra单元测试用例  在AndroidManifest.xml中标明了测试用例instrumentation函数入口  Java代码 <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2008 The Android Open Source Project Licensed under the Apach

文档-android: android 中文件的备份问题

问题描述 android: android 中文件的备份问题 我想问一下,如果我的app 生成了几个文件,有办法压缩备份成一个新的文件吗.? 我看有.backup 后缀的文件,是怎么生成的呢? 谢谢..最好有API 或者文档什么的 解决方案 Android文件访问权限和路径问题Android 本地文件读取, 数据库文件备份android读SDCard中txt文件中文乱码问题 解决方案二: .backup是一些备份文件.总体说来 Android API Level 8及其以上Android系统提供

Android——Android lint工具项目资源清理详解_Android

Android--Android lint工具项目资源清理 最近维护的项目已经有两年多,经过很多前辈的迭代,项目并没有变得健壮,而变得很臃肿.用Android lint工具清理了一次,清楚了不少废弃的布局和资源. 1.     Android lint工具 可以右键项目,Android tools,退出的时候clear lint markers即可 也可以如图: 2.结果出来了,分析分析 3.xml中view太多,已经超过了80个,影响性能. 布局优化: 尽量使用include.merge.Vi

[Android]Android端ORM框架——RapidORM(v2.0)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM框架--RapidORM(v2.0) RapidORM:Android端轻量高性能的ORM框架 GitHub: https://github.com/wangjiegulu/RapidORM 1. RapidORM v1.0 v1.0博客文档:http://www.cnblogs.com/tiant

[Android]Android端ORM框架——RapidORM(v2.1)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM框架--RapidORM(v2.1) RapidORM:Android端轻量高性能的ORM框架 GitHub: https://github.com/wangjiegulu/RapidORM RapidORM v2.1 feature 在执行SQL和创建表时提升性能. 提升bind参数时的性能 In

Android——Android lint工具项目资源清理详解

Android--Android lint工具项目资源清理 最近维护的项目已经有两年多,经过很多前辈的迭代,项目并没有变得健壮,而变得很臃肿.用Android lint工具清理了一次,清楚了不少废弃的布局和资源. 1.     Android lint工具 可以右键项目,Android tools,退出的时候clear lint markers即可 也可以如图: 2.结果出来了,分析分析 3.xml中view太多,已经超过了80个,影响性能. 布局优化: 尽量使用include.merge.Vi

[android]android工程引用第三方jar提示找不到相关class的解决方法

使用第三方jar包  步骤:  方法1:Eclipse下, 右键工程, Build path, java build path,选择libraries 在右边的按钮中点击"Add Library" 选择"User library",点击"下一步" 点击"User librarys"按钮 在出现的界面中点击"New.."按钮 在弹出的界面中随便起一个名字,点击"确定" 点击"Ad

[Android]Android数据的四种存储方式

Context ctx=MainActivity.this; ContentResolver resolver =ctx.getContentResolver(); Uri uri=Uri.parse("content://com.example.androidtestdemo"); Cursor c = resolver.query(uri, null, null, null, null); c.moveToFirst(); while(!c.isAfterLast()){ for(

[android]android自动化测试十一之代码覆盖率报告EMMA

以下代码时监听测试程序结束后将Emma测试报告写入到虚拟机上,然后可以使用adb pull命令发送至硬盘上,这里需要测试程序集成Emma jar包,并需要修改ant build文件. package com.example.instrumentation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.example.i2at.tc.Temperatu