导航:首页 > 操作系统 > android动态设置weight

android动态设置weight

发布时间:2023-05-17 22:19:57

‘壹’ android:layout_width=“0dp”有什么用为什么这么设置

dp是dpi的缩写,dpi表示分辨率,指每英寸长度上的点数,0dp就是0分辨率。如果你要设置水平方向的比例,就必须把View的android:width属性设置为0dp。然后设置为android weight属性设置比例即可;同理,竖直方向,只需设android:height为0dp,然后设weight属性即可。

‘贰’ 如何在代码中动态为TextView设置drawableRight

1

<TextView

android:id="@+id/Title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:drawableRight="@drawable/check_down"

android:gravity="center_vertical"

android:textSize="24dip"桐卜

android:maxLines="1"

android:ellipsize="end"/>

我们写在xml的时候,都是这么写的。那代码呢?我们发现TextView他有一个方法

2

public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);

这个方法呢,就是可以在java代码动态的画虚轮瞎 左上右下几个方向

类似于xml中的 android:drawableLeft="@drawable/icon"

android:drawableTop="@drawable/icon"

android:drawableRight="@drawable/icon"

android:drawableButtom="@drawable/icon"

3

具体在代码中的用法是:

Drawable drawable = getResources().getDrawable(R.drawable.spinner_checked);

drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); //设置边界

titleTv.setCompoundDrawables(null, null, drawable, null);//画在右边

4

运行之后的效果

如何在代码中动态为TextView设置drawableRight

如何在代码中动态为TextView设置drawableRight

5

界面比较丑,勿喷差空,大家也还可以通过这个方法实现

public void (Drawable left,

Drawable top, Drawable right, Drawable bottom)

转载

‘叁’ Android-屏幕适配全攻略(绝对详细)(一)

关键字: 屏幕适配 px dp dpi sp large限定符 .9.png

前言: 这篇文章依然是我在 [慕课网 ][h]学习 凯子哥 的同名视频 Android-屏幕适配全攻略 ,所记录下来的笔记---凯子哥讲得真的超详细。
[h]: http://www.imooc.com/ "MOOC"

从上图可以看出,主流的分辨率是前六种:1280×720、1920×1080、800×480、854×480、960×540、1184×720,不过我们有解决方案。看完这篇文章,想必你就可以解决常见的屏幕适配问题。

接下来正式进入正题。

介绍几个在Android屏幕适配上非常重要的名词:

屏幕尺寸 是指屏幕对角线的长度。单位是英寸,1英寸=2.54厘米
屏幕分辨率 是指在横纵向上的像素点数,单位是px,1px=1像素点,一般是纵向像素横向像素,如1280×720
屏幕像素密度 是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写,像素密度和屏幕尺寸和屏幕分辨率有关

dip: Density Independent Pixels(密度无关像素)的缩写。以 160dpi 为基准,1dp=1px
dp: dip
dpi: 屏幕像素密度的单位,“dot per inch”的缩写

px: 像素,物理上的绝对单位

sp: Scale-Independent Pixels的缩写,可以根据文字大小首选项自动进行缩放。Google推荐我们使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇数和小数。

用于区分不同的像素密度。

在Google官方开发文档中,说明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。

我们可以通过以下几种方式来支持各种屏幕尺寸:

wrap_content: 根据控件的内容设置控件的尺寸
math_parent: 根据父控件的尺寸大小设置控件的尺寸
weight: 权重,在线性布局中可以使用weight属性设置控件所占的比例

例如,我们要实现下图所显示的效果:当屏幕尺寸改变时,new reader控件两边的控件大小不变,new reader控件会占完剩余的空间。

具体布局文件如下:

小插曲: 关于 android:layout_weight 属性

一般情况,我们都是设置要进行比例分配的方向的宽度为0dp,然后再用权重进行分配。如下:

效果为:

效果为:

button1宽度=L+(L-2L)×1/3=2/3L
button2宽度=L+(L-2L)×2/3=1/3L

当然,还有其他的方式,都可以运用此公式进行计算。
在实际开发中,我们一般使用0dp的方式,而不使用其他方式。

简单的布局一般都使用 线性布局 ,而略微复杂点的布局,我们使用 相对布局 ,大多数时候,我们都是使用这两种布局的嵌套。

我们使用 相对布局 的原因是, 相对布局 能在各种尺寸的屏幕上保持控件间的相对位置。

res/layout/main.xml 单面板:

res/layout-large/main.xml 双面板:

如果这个程序运行在屏幕尺寸大于7inch的设备上,系统就会加载 res/layout-large/main.xml 而不是 res/layout/main.xml ,在小于7inch的设备上就会加载 res/layout/main.xml 。

需要注意的是,这种通过 large 限定符分辨屏幕尺寸的方法,适用于android3.2之前。在android3.2之后,为了更精确地分辨屏幕尺寸大小,Google推出了最小宽度限定符。

res/layout-sw600dp/main.xml ,双面板布局: Small Width 最小宽度

这种方式是不区分屏幕方向的。这种最小宽度限定符适用于android3.2之后,所以如果要适配android全部的版本,就要使用 large 限定符和 sw600dp 文件同时存在于项目 res 目录下。

这就要求我们维护两个相同功能的文件。为了避免繁琐操作,我们就要使用布局别名。

由于后两个文具文件一样,我们可以用以下两个文件代替上面三个布局文件:

res/layout/main.xml 单面板布局
res/layout/main_twopanes.xml 双面板布局

然后在 res 下建立
res/values/layout.xml 、
res/values-large/layout.xml 、
res/values-sw600dp/layout.xml 三个文件。

默认布局
res/values/layout.xml :

Android3.2之前的平板布局
res/values-large/layout.xml :

Android3.2之后的平板布局
res/values-sw600dp/layout.xml :

这样就有了 main 为别名的布局。
在activity中 setContentView(R.layout.main);

这样,程序在运行时,就会检测手机的屏幕大小,如果是平板设备就会加载 res/layout/main_twopanes.xml ,如果是手机设备,就会加载 res/layout/main.xml 。我们就解决了只使用一个布局文件来适配android3.2前后的所有平板设备。

如果我们要求给横屏、竖屏显示的布局不一样。就可以使用 屏幕方向限定符 来实现。
例如,要在平板上实现横竖屏显示不用的布局,可以用以下方式实现。
res/values-sw600dp-land/layouts.xml :横屏

res/values-sw600dp-port/layouts.xml :竖屏

自动拉伸位图,即android下特有的 .9.png 图片格式。

当我们需要使图片在拉伸后还能保持一定的显示效果,比如,不能使图片中的重要像素拉伸,不能使内容区域受到拉伸的影响,我们就可以使用 .9.png 图来实现。

要使用 .9.png ,必须先得创建 .9.png 图片,androidSDK给我们提供了的工具就包含 .9.png 文件的创建和修改工具。双击 SDK安装目录 oolsdraw9patch.bat ,就会打开下图所示的窗口。

下面是一个例子:

Button属性设置:

如果我们选择的内容区域偏差太大,可能就不会显示出text值 BUTTON 。

好了,这篇文章写的有点多了,剩下的内容放在 下篇文章 记录吧。
内容提要:
解决方案-支持各种屏幕密度
解决方案-实施自适应用户界面流程

未完待续

‘肆’ LinearLayout布局下android:layout_weight用法

  1. layout_weight意思是布局比重的意思,在线性布局中常用layout_weight,分割布局。

  2. 通常线性布局中宽高布局常信丛用android:layout_width=match_parent|wrap_content,android_height=match_parent|wrap_content来进行布局,如果要用比重布局,通常android:layout_width属性滑腊樱就会不起作用,设局老置为"0";根据想要布局的比例,设定android:layout_weight的值,值越大,占的布局就越大。

  3. 考虑到Android多版本的兼容问题,通常使用match_parent而不使用fill_parent.

‘伍’ 怎么用代码设置LinearView的weight

通过坦乱乎Java代码设置layout_weight
通过Java code来设置View的layout_weight。
方法一:
LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 1.0f);

然后让悉:View.setLayoutParams(param),则这个View在它的LinearLayout的layout_weight为1.0f (表示1.0是浮点数,或者 (float)1.0)
方法二:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
params.weight = 1.0f;
Button button = new Button(this);
button.setLayoutParams(params);

为什么会有方法二呢?因为有可能会通过new LinearLayout.LayoutParams来陪桥设置Gravity,比如:
leftArrow = new ImageButton(context);
lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, Gravity.LEFT);
lp.weight = 1.0f;
leftArrow.setLayoutParams(lp);

‘陆’ android:layout的width与weight是什么意思有什么区别

很简单啦。width是指这个控件本身的宽度,而weight是指控件位于布局(容器)中的宽度位置,一般是百分比。

‘柒’ Android 自定义控件 动态设置高度

Android动态改变View控件大小的方法:
1、声明控件参数获取对象 LayoutParams lp;
2、获取控件参数: lp = 控件id.getLayoutParams();
3、设置控件参数:如高度。 lp.height -= 10;
4:、使设置生效:控件id.setLayoutParams(lp);
例如如要把Imageview下移200px: ImageView.setPadding( ImageView.getPaddingLeft(), ImageView.getPaddingTop()+200, ImageView.getPaddingRight(), ImageView.getPaddingBottom());

‘捌’ android 如何动态设置控件的宽度和高度

一、方法
使用getLayoutParams() 和setLayoutParams()方法
二、示例代码
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) aaa.getLayoutParams();
// 取控件aaa当前的布局参数
linearParams.height = 365; // 当控件的高强制设成365象素
aaa.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件aaa
三、原理
a)getLayoutParams()和setLayoutParams()都是控件基类view的public方法,在外部也可以直接调用。
b)由于LayoutParams一般是在加入容器中设置的,所以容易混淆所指定的布局属性究竟是保存在容器中,还是控件本身的属性,答案是控件本身。但是在设置时还是要注意布局属性与容器种类密切相关。

‘玖’ 安卓开发如何设置wight比重

在xml文件里面设置,一般在线性布局里面使用。android:layout_weight="1"通过此熟悉设置权重,即所占比例。比如2个空间,一个android:layout_weight="1",另一个android:layout_weight="2",则前一个比重为1/(1+2)=1/3,另外一个为2/3.
具体可参考这个链接http://www.2cto.com/kf/201109/104482.html

‘拾’ android布局里的Button排列问题

这样可以完全达到你的要求,并且屏幕怎么变都行

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
胡戚配android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
裤指仔敬android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
阅读全文

与android动态设置weight相关的资料

热点内容
ug编程教程pdf 浏览:763
latex编译软件安卓版 浏览:248
如何在信合app上交居民医保 浏览:109
丑恶pdf 浏览:365
陕西定频压缩机销售公司 浏览:795
安卓系统如何帮人打王者 浏览:427
sbtlinux安装 浏览:141
阿里云sip服务器 浏览:73
身为程序员的你怎么拼命 浏览:453
android图片手势放大 浏览:586
钱的所有算法 浏览:13
光模块服务器怎么直接连电脑 浏览:376
编译器识别单词 浏览:344
2b2t服务器怎么获得金苹果 浏览:344
SQL如何进行服务器配置 浏览:175
贸易公司适合在什么app引流 浏览:717
高级c语言编程还在用turboc 浏览:884
cad如何画单片机 浏览:13
管理云服务器哪个软件好 浏览:747
什么app可以消除照片一片水印 浏览:242