我最后编写了自己的类,扩展了ScrollView

既然你问……这是代码.可能不是最干净但它做我想要的.

请注意,它期望在创建视图时设置layout_weight,并且不应在父LinearLayout中设置weigthSum,否则你会得到有趣的东西(因为这个的权重从原始值变为0,具体取决于大小ScrollView的内容)

首先,在布局文件中,视图声明如下:

android:id="@+id/scroll"

android:scrollbars="vertical"

android:layout_height="0dp"

android:layout_width="fill_parent"

android:layout_weight="4"

android:background="#cc0000"

>

android:id="@+id/in_scroll_view"

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:background="#0000bb"

/>

然后是小部件的代码:

import android.content.Context;

import android.util.AttributeSet;

import android.widget.LinearLayout;

import android.widget.ScrollView;

public class ShrinkingScrollView extends ScrollView {

private float original_weight=-1;

public ShrinkingScrollView(Context context) {

super(context);

}

public ShrinkingScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public ShrinkingScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) getLayoutParams();

float previous_weight = params.weight;

if (original_weight == -1)

original_weight = params.weight;

if ((getChildCount()>0) && (getVisibility()!=GONE)) {

super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));

int overall_height = getChildAt(0).getMeasuredHeight();

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

if (getMeasuredHeight() >= overall_height) {

if (previous_weight != 0) {

params.weight=0;

params.height = overall_height;

setLayoutParams(params);

post(new Runnable() {

public void run() {

requestLayout();

}

});

}

setMeasuredDimension(getMeasuredWidth(),overall_height);

}

else if (previous_weight == 0) {

params.weight = original_weight;

params.height = 0;

setLayoutParams(params);

post(new Runnable() {

public void run() {

requestLayout();

}

});

}

}

else {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

}

}

android 代码布局设置wrap_content,android ScrollView布局(wrap_content,最大大小)相关推荐

  1. android 设置字体大小和不同颜色,Android代码中设置字体大小,字体颜色,显示两种颜色.倒计时效果...

    Android代码中设置字体大小,字体颜色,显示两种颜色 在xml文件中字体大小用的像素 android:id="@+id/uppaid_time" android:layout_ ...

  2. android 动态设置margin,android 代码中设置margin

    场景:Android怎么在java代码中设置margin Android如何在java代码中设置margin 原创帖,转发请注明出处:http://thierry-xing.iteye.com/blo ...

  3. android动态设置src,Android 代码里设置ImageView的src和background

    设置ImageView的src: image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); String path= ...

  4. Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇

    Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...

  5. android 图片文字布局,Android代码实现图片和文字上下布局

    在Android开发中经常会需要用到带文字和图片的button,下面来给大家介绍使用radiobutton实现图片和文字上下布局或左右布局.代码很简单就不给大家多解释了. 布局文件很简单,用来展示Ra ...

  6. Android代码动态设置圆角,颜色,线条背景

    开发中平时用到了圆角背景,但是每个圆角背景都不一样,这样还要创建多个xml布局,为了简单快捷,可以使用代码创建圆角背景. 这里以创建矩形圆角背景为例.GradientDrawable.RECTANGL ...

  7. Android为spinner设置适配器,Android Spinner与适配器模式详解及实例代码

    最近做项目对Android Spinner 使用,这里简单写个小例子,来测试如何使用. Spinner 是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置Android:entrie ...

  8. android 如何动态设置margin,Android 动态设置margin

    android的view中有setPadding,但是没有直接的setMargin方法.如果要在代码中设置该怎么做呢? 可以通过设置view里面的LayoutParams 设置,而这个LayoutPa ...

  9. [最新] Android 代码规范大全(Android开发速看),2021年最新大厂Android面试笔试题目

    | 数据库类 | 功能名 + DBHelper | 新闻数据库:NewsDBHelper | | 自定义的共享基础类 | Base + 基础 | BaseActivity, BaseFragment ...

  10. android播放器设置中文,Android 视频播放器 (一):使用VideoView播放视频

    一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: •  VideoView是使用Med ...

最新文章

  1. 干掉系统害群之马 轻轻松松“杀”进程
  2. 一阶倒立摆的输入和输出是什么_了解一阶高通滤波器传递函数
  3. 前端 JS 之 AJAX 简介及使用
  4. Android 布局
  5. ida模拟器调试_IDA pro远程调试折腾记
  6. 【渝粤教育】国家开放大学2018年春季 0692-21T化工设备机械基础 参考试题
  7. GridView的多表头(排序)实例方法
  8. robot framework -重点记录
  9. 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
  10. hge引擎配置登录器教程_HGEM2引擎登录器列表格式TXT
  11. 大一java实训报告1500字_java实训报告两篇
  12. 微信emoji表情及输入法自带表情存储与显示
  13. 朴素贝叶斯与贝叶斯信念网络
  14. K64 计算 UART波特率
  15. 传统蓝牙base on pincode配对以及安全简单配对(Secure Simple Pairing)流程介绍
  16. git文件夹不显示绿勾
  17. C语言数组练习-摘苹果
  18. 中国地理知识大全 中国地理知识集锦
  19. H3C无线AC+AP配置1—无密码登录
  20. OpenGrok使用

热门文章

  1. Google 最新的 Fuchsia OS【科技讯息摘要】
  2. EventBus学习
  3. 使用Javascript正则表达式来格式化XML内容
  4. Mysql limit 子查询
  5. 用unison来同步你的远程文件夹 - Fwolf's Blog
  6. Wamp5 配置PHP 图文详解(转)
  7. 重写Checkbox 改写选择框的大小
  8. tb计算机存储单位_如何节省数TB的云存储
  9. leetcode852. 山脉数组的峰顶索引(二分法)
  10. 卷积神经网络 手势识别_如何构建识别手语手势的卷积神经网络