android 代码布局设置wrap_content,android ScrollView布局(wrap_content,最大大小)
我最后编写了自己的类,扩展了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,最大大小)相关推荐
- android 设置字体大小和不同颜色,Android代码中设置字体大小,字体颜色,显示两种颜色.倒计时效果...
Android代码中设置字体大小,字体颜色,显示两种颜色 在xml文件中字体大小用的像素 android:id="@+id/uppaid_time" android:layout_ ...
- android 动态设置margin,android 代码中设置margin
场景:Android怎么在java代码中设置margin Android如何在java代码中设置margin 原创帖,转发请注明出处:http://thierry-xing.iteye.com/blo ...
- android动态设置src,Android 代码里设置ImageView的src和background
设置ImageView的src: image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); String path= ...
- Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇
Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...
- android 图片文字布局,Android代码实现图片和文字上下布局
在Android开发中经常会需要用到带文字和图片的button,下面来给大家介绍使用radiobutton实现图片和文字上下布局或左右布局.代码很简单就不给大家多解释了. 布局文件很简单,用来展示Ra ...
- Android代码动态设置圆角,颜色,线条背景
开发中平时用到了圆角背景,但是每个圆角背景都不一样,这样还要创建多个xml布局,为了简单快捷,可以使用代码创建圆角背景. 这里以创建矩形圆角背景为例.GradientDrawable.RECTANGL ...
- Android为spinner设置适配器,Android Spinner与适配器模式详解及实例代码
最近做项目对Android Spinner 使用,这里简单写个小例子,来测试如何使用. Spinner 是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置Android:entrie ...
- android 如何动态设置margin,Android 动态设置margin
android的view中有setPadding,但是没有直接的setMargin方法.如果要在代码中设置该怎么做呢? 可以通过设置view里面的LayoutParams 设置,而这个LayoutPa ...
- [最新] Android 代码规范大全(Android开发速看),2021年最新大厂Android面试笔试题目
| 数据库类 | 功能名 + DBHelper | 新闻数据库:NewsDBHelper | | 自定义的共享基础类 | Base + 基础 | BaseActivity, BaseFragment ...
- android播放器设置中文,Android 视频播放器 (一):使用VideoView播放视频
一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: • VideoView是使用Med ...
最新文章
- 干掉系统害群之马 轻轻松松“杀”进程
- 一阶倒立摆的输入和输出是什么_了解一阶高通滤波器传递函数
- 前端 JS 之 AJAX 简介及使用
- Android 布局
- ida模拟器调试_IDA pro远程调试折腾记
- 【渝粤教育】国家开放大学2018年春季 0692-21T化工设备机械基础 参考试题
- GridView的多表头(排序)实例方法
- robot framework -重点记录
- 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
- hge引擎配置登录器教程_HGEM2引擎登录器列表格式TXT
- 大一java实训报告1500字_java实训报告两篇
- 微信emoji表情及输入法自带表情存储与显示
- 朴素贝叶斯与贝叶斯信念网络
- K64 计算 UART波特率
- 传统蓝牙base on pincode配对以及安全简单配对(Secure Simple Pairing)流程介绍
- git文件夹不显示绿勾
- C语言数组练习-摘苹果
- 中国地理知识大全 中国地理知识集锦
- H3C无线AC+AP配置1—无密码登录
- OpenGrok使用