android背景平铺 按钮背景无法适应尺寸得问题

39215人阅读
Android(16)
ImageView中XML属性src和background的区别:
background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。
此外:scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式
如上所述,background设置的图片会跟View组件给定的长宽比例进行拉伸。举个例子, 36x36 px的图标放在 xhdpi 文件夹中,在854x480(FWVGA,对应hdpi)环境下,按照
xhdpi : hdpi : mdpi: ldip =&2 : 1.5 : 1 : 0.75
的比例计算,在FWVGA下,图标的实际大小应该是 27x27。
但是当我把它放到一个 layout_width = 96px, layout_height = 75px 的 LinearLayout,布局代码如下:
&LinearLayout android:gravity=&center& android:layout_width=&96px& android:layout_height=&75px&
&ImageButton android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:background=&@drawable/toolbar_bg&/&
&/LinearLayout&
实际情况是,我们得到的ImageButton的大小是 33x27,很明显width被拉伸了,这是我们不想看到的情况。
解决方案一:
代码中动态显式设置ImageButton的layout_width和layout_width,如下& LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(27, 27);
layout.addView(imageButton, layoutParam);不过,事实上我们并不希望在代码存在“硬编码”的情况。
解决方案二:
在你通过setBackgroundResource()或者在xml设置android:background属性时,将你的background以XML Bitmap的形式定义,如下:
&?xml version=&1.0& encoding=&utf-8&?&
&bitmap xmlns:android=&/apk/res/android&
android:id=&@id/toolbar_bg_bmp&
android:src=&@drawable/toolbar_bg&
android:tileMode=&disabled& android:gravity=&top& &
&/bitmap&调用如下:
& & imageButton.setBackgroundResource(R.drawable.toolbar_bg_bmp)
& & &ImageButton ... &android:background=&@drawable/toolbar_bg_bmp& ... /&
若背景图片有多种状态,还可参照toolbar_bg_selector.xml:
&?xml version=&1.0& encoding=&utf-8&?&
&selector xmlns:android=&/apk/res/android& &
&item android:state_pressed=&true& &
&bitmap android:src=&@drawable/toolbar_bg_sel& android:tileMode=&disabled& android:gravity=&top& /&
&bitmap android:src=&@drawable/toolbar_bg& android:tileMode=&disabled& android:gravity=&top& /&
&/selector&
如此,不管是通过代码方式setBackgroundResource()或XML android:background方式设置背景,均不会产生被拉伸的情况。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:689051次
积分:8587
积分:8587
排名:第1349名
原创:142篇
转载:280篇
评论:117条
(1)(1)(1)(2)(1)(1)(2)(2)(2)(2)(1)(1)(2)(3)(4)(4)(5)(1)(5)(13)(26)(2)(11)(1)(9)(8)(20)(5)(12)(11)(29)(8)(1)(7)(19)(16)(24)(21)(34)(11)(16)(34)(24)(20)> Android开发_怎么设置按钮背景透明与半透明_图片背景透明
Android开发_怎么设置按钮背景透明与半透明_图片背景透明
mpony123 & &
发布时间: & &
浏览:4 & &
回复:0 & &
悬赏:0.0希赛币
Android开发_如何设置按钮背景透明与半透明_图片背景透明
  Button或者ImageButton的背景设为透明或者半透明
  半透明&Button android:background="#e0000000" ... /&
  透明&Button android:background="#" ... /&
  颜 色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范
  围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示
  完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff)
  ;“bb=blue”(00 到 ff);“gg=green”(00 到 ff);“rr=red”(00
  到 ff)。例如,如果您希望对某叠加层应用不透明度为 50% 的蓝色,则应
  指定以下值:7fff0000
  设置背景图片透明度(超简单)
  View v = findViewById(ntent);//找到你要设透明背景的layout
v.getBackground().setAlpha(100);//0~255透明度值
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&Android自定义Button按钮显示样式
&现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的。今天学习自定义Button按钮样式。Button样式修改的是Button的背景(Background)属性。
首先写一个定义Button样式的XML文件:
新建Android XML文件,类型选Drawable,根结点选selector,文件名就buton_style吧。
程序自动给我们刚刚建的文件里加了selector结点,我们只需要在selector结点里写上三种状态时显示的背景图片(按下、获取焦点,正常)。
代码如下:
&?xml version=&1.0& encoding=&utf-8&?&&
&selector xmlns:android=&&&&
&&& &item android:state_pressed=&true& android:drawable=&@drawable/play_press& /&&
&&& &item android:state_focused=&true& android:drawable=&@drawable/play_press& /&&
&&& &item android:drawable=&@drawable/play& /&&
&/selector&&&
我这里获取焦点跟点击时显示的是同一张图片,必须严格照上面的顺序写,不可倒。
接下来只要在布局时写Button控件时应用到Button的Background属性即可。
&Button android:id=&@+id/button1&&
&&& android:layout_width=&wrap_content& android:layout_height=&wrap_content&&
&&& android:background=&@drawable/button_style&&
&&/Button&&&
最终效果图:
再加上一种自定义样式方法,上面的是用图片,其实我们可以直接通过定义xml文件来实现不同的样式:
在上面的源代码基础上,只需要修改button_style文件,同样三种状态分开定义:
&?xml version=&1.0& encoding=&utf-8&?&&
&selector xmlns:android=&&&&
&&& &item android:state_pressed=&true&&&
&&&&&&& &shape&&
&&&&&&&&&&& &gradient android:startColor=&#0d76e1& android:endColor=&#0d76e1&&
&&&&&&&&&&&&&&& android:angle=&270& /&&
&&&&&&&&&&& &stroke android:width=&1dip& android:color=&#f403c9& /&&
&&&&&&&&&&& &corners android:radius=&2dp& /&&
&&&&&&&&&&& &padding android:left=&10dp& android:top=&10dp&&
&&&&&&&&&&&&&&& android:right=&10dp& android:bottom=&10dp& /&&
&&&&&&& &/shape&&
&&& &/item&&
&&& &item android:state_focused=&true&&&
&&&&&&& &shape&&
&&&&&&&&&&& &gradient android:startColor=&#ffc2b7& android:endColor=&#ffc2b7&&
&&&&&&&&&&&&&&& android:angle=&270& /&&
&&&&&&&&&&& &stroke android:width=&1dip& android:color=&#f403c9& /&&
&&&&&&&&&&& &corners android:radius=&2dp& /&&
&&&&&&&&&&& &padding android:left=&10dp& android:top=&10dp&&
&&&&&&&&&&&&&&& android:right=&10dp& android:bottom=&10dp& /&&
&&&&&&& &/shape&&
&&& &/item&&
&&& &item&&
&&&&&&& &shape&&
&&&&&&&&&&& &gradient android:startColor=&#000000& android:endColor=&#ffffff&&
&&&&&&&&&&&&&&& android:angle=&180& /&&
&&&&&&&&&&& &stroke android:width=&1dip& android:color=&#f403c9& /&&
&&&&&&&&&&& &corners android:radius=&5dip& /&&
&&&&&&&&&&& &padding android:left=&10dp& android:top=&10dp&&
&&&&&&&&&&&&&&& android:right=&10dp& android:bottom=&10dp& /&&
&&&&&&& &/shape&&
&&& &/item&&
&/selector&&&
gradient 主体渐变 startColor开始颜色,endColor结束颜色 ,angle开始渐变的角度(值只能为90的倍数,0时为左到右渐变,90时为下到上渐变,依次逆时针类推)
stroke 边框 width 边框宽度,color 边框颜色
corners 圆角 radius 半径,0为直角
padding text值的相对位置
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 android背景平铺 的文章

 

随机推荐