layoutparamsandroid
㈠ android 编程开发中 子view没有设置LayoutParams
如果一个View没有setLayoutParams,在该View被添加到一个ViewGroup里时,ViewGroup会为该View创建一个默认的LayoutParams。所以如果题中的view已经存在于一个ViewGroup中,view.getLayoutParams()便会得到ViewGroup为其创建的默认LayoutParams。而这个默认LayoutParams会因ViewGroup而变,这就看是什么ViewGroup了。
看下源码就知道了:
1.ViewGroup.addView
java">publicvoidaddView(Viewchild,intindex){
if(child==null){
("");
}
LayoutParamsparams=child.getLayoutParams();
if(params==null){
params=generateDefaultLayoutParams();
if(params==null){
("generateDefaultLayoutParams()cannotreturnnull");
}
}
addView(child,index,params);
}
2.FrameLayout.generateDefaultLayoutParams
(){
returnnewLayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
}
3.LinearLayout.generateDefaultLayoutParams
(){
if(mOrientation==HORIZONTAL){
returnnewLayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
}elseif(mOrientation==VERTICAL){
returnnewLayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
}
returnnull;
}
㈡ android 中怎么改变已加入控件后的layoutparams中的部分属性 例如相对布局中的topMargin
RelativeLayout.LayoutParams layoutParams=(RelativeLayout.LayoutParams) textForth.getLayoutParams();
layoutParams.topMargin=10;
layoutParams.bottomMargin=5;
layoutParams.width=30;
layoutParams.height=30;
textForth.setBackgroundResource(R.drawable.exhibitors_small_white_star);
㈢ Android如何实现类似下面的布局。
你的问题应该是要动态生成空间吧。
下面的答案可以参考下。
首先要却这个界面的布局,是absolutelayout,relativelayout还是其他,然后就可以再里面添加控件了:
public
void
oncreate(bundle
savedinstancestate)
{
super.oncreate(savedinstancestate);
//确定界面的布局
absolutelayout
abslayout=new
absolutelayout
(this);
setcontentview(abslayout);
//创建一个button按钮
button
btn1
=
new
button(this);
btn1.settext(”this
is
a
button”);
btn1.setid(1);
//确定这个控件的大小和位置
absolutelayout.layoutparams
lp1
=
new
absolutelayout.layoutparams(
viewgroup.layoutparams.wrap_content,
viewgroup.layoutparams.wrap_content,
0,100);
abslayout.addview(btn1,
lp1
);
}
一个界面可以布置一个布局,可以多个布局一起设计:
public
void
oncreate(bundle
savedinstancestate)
{
super.oncreate(savedinstancestate);
//设置界面的布局
relativelayout
relativelayout
=
new
relativelayout(this);
setcontentview(relativelayout);
//添加一个absolutelayout子布局,并给这个布局添加一个button
absolutelayout
abslayout=new
absolutelayout
(this);
abslayout.setid(11);
button
btn1
=
new
button(this);
btn1.settext(”this
is
a
abslayout
button”);
btn1.setid(1);
absolutelayout.layoutparams
lp0
=
new
absolutelayout.layoutparams(viewgroup.layoutparams.wrap_content,
viewgroup.layoutparams.wrap_content,100,0);
abslayout.addview(btn1,
lp0
);
//将这个子布局添加到主布局中
relativelayout.layoutparams
lp1
=
new
relativelayout.layoutparams(viewgroup.layoutparams.wrap_content,
viewgroup.layoutparams.wrap_content);
lp1.addrule(relativelayout.align_parent_top);
lp1.addrule(relativelayout.center_horizontal,
relativelayout.true);
relativelayout.addview(abslayout
,lp1);
//再添加一个子布局
relativelayout
relativelayout1
=
new
relativelayout(this);
button
btn2
=
new
button(this);
btn2.settext(”this
is
a
relativelayout1
button”);
btn2.setid(2);
relativelayout.layoutparams
lp2
=
new
relativelayout.layoutparams(viewgroup.layoutparams.fill_parent,
viewgroup.layoutparams.wrap_content);
lp2.addrule(relativelayout.align_parent_top);
lp2.addrule(relativelayout.center_horizontal,
relativelayout.true);
relativelayout1.addview(btn2
,lp2);
//将这个布局添加到主布局中
relativelayout.layoutparams
lp11
=
new
relativelayout.layoutparams(viewgroup.layoutparams.wrap_content,
viewgroup.layoutparams.wrap_content);
lp11.addrule(relativelayout.below
,11);
relativelayout.addview(relativelayout1
,lp11);
}
㈣ 安卓开发:如何设置控件叠放的层次
只需要在布局文件中调整代码位置,你想把什么放界面的最上面就把代码放在xml文件的最下面,这样的顺序。
㈤ android 夜间模式怎么实现
原理很简单:利用setTheme调用不同的风格,而白天与黑夜的区别就是在于夜间模式直接利用黑色背景,其他图片啊,背景啊,通通变成透明的,就可以了。
<!-- 默认风格 -->
<style name="BrowserThemeDefault" parent="@android:style/Theme">
<item name="bookimage">@drawable/day</item>
</style>
<!-- 夜间模式 --> 其实就是一张透明图片
<style name="BrowserThemeNight" parent="@android:style/Theme">
<item name="nightimage">@drawable/night</item>
</style>
切换程序:
if (blFlag) {
this.setTheme(R.style.BrowserThemeDefault);
blFlag = false;
} else {
this.setTheme(R.style.BrowserThemeNight);
blFlag = true;
}
㈥ Android中怎么用纯代码编写布局
一、用RelativeLayout进行纯代码布局的理论基础
1、RelativeLayout,顾名思义,就是以“相对”位置/对齐 为基础的布局方式。
2、android.widget.RelativeLayout 有个继承自android.view.ViewGroup.LayoutParams 的内嵌类 LayoutParams,使用这个类的实例
调用RelativeLayout.addView 就可以实现“相对布局”。 android.widget.RelativeLayout.LayoutParams 有一个构造函数:
RelativeLayout.LayoutParams(int w, int h),参数指定了子 View 的宽度和高度,这一点和其父类是一样的。而实现相对布局的关
键在它的 两个 addRule 方法上。anchor 参数指定可以是View 的 id(“相对于谁”)、RelativeLayout.TRUE(启用某种对齐方式) 或者
是-1(应用于某些不需要 anchor 的 verb);AddRule 方法的 verb 参数指定相对的“动作”(以下常量均定义于
android.widget.RelativeLayout中,为了简便不给出其全名):
3、ALIGN_BOTTOM、ALIGN_LEFT、 ALIGN_RIGHT、 ALIGN_TOP: 本 View 的 底边/左边/右边/顶边 和 anchor 指定的 View 的
底边/左边/右边/顶边 对齐。
ALIGN_WITH_PARENT_BOTTOM 、ALIGN_WITH_PARENT_LEFT 、 ALIGN_WITH_PARENT_RIGHT 、
ALIGN_WITH_PARENT_TOP : 和上面一组常量类似,只不过不需要再指定 anchor, 其 anchor 自动为 Parent View。
CENTER_HORIZONTAL、CENTER_IN_PARENT 、CENTER_VERTICAL : 如果 anchor 为 TRUE,在 Parent 中 水平居中/水平
和垂直均居中/垂直居中。
POSITION_ABOVE 、POSITION_BELOW 、 POSITION_TO_LEFT 、POSITION_TO_RIGHT : 本 View 位于 anchor 指定的 View
的上边/下边/左边/右边。
㈦ 关于java的android编程中setLayoutParams方法设置宽度的一个疑问
private LinearLayout generateHeadOfControl() {
LinearLayout LayoutHead = createLayout(LinearLayout.HORIZONTAL);
Button DateButton = generateDateButton();
Button ItemButton = generateItemButton();
DateButton.setLayoutParams(new LinearLayout.LayoutParams(100,
LinearLayout.LayoutParams.WRAP_CONTENT));
ItemButton .setLayoutParams(new LinearLayout.LayoutParams(100,
LinearLayout.LayoutParams.WRAP_CONTENT));
layoutHead.addView(DateButton);
layoutHead.addView(ItemButton);
return layoutHead;
}
==========================
你的错误错在,在LinearLayout里设置params用的是ViewGroup的LayoutParams,所以会出错,上面的代码OK了~
还有,在setLayout之后再addView操作。
㈧ Android中view 怎样通过代码设置 layout
android将一个view添加到layout中的方法为:
1、在配置文件里写的,在垂直线性布局里添加一个文本view和一个按钮。
2、下面是使用代码的方式,操作相对比较繁琐。有种使用LayoutInflater.from(this).inflate(resource,
root)会比较方便点。
RelativeLayout
layout
=
new
RelativeLayout(this);
layout.setLayoutParams(new
LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
TextView
name
=
new
TextView(this);name.setText("您好");
android.widget.RelativeLayout.LayoutParams
layoutParams
=
new
android.widget.RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,
RelativeLayout.TRUE);
layout.addView(name);
㈨ Android 中,在service里定义View并显示出来,对LayoutParams有什么限定吗
serveice是一般后台执行的,所以理论上无法显示view,只能在activity显示这个view的时候,调用这个service,或者service执行的时候显示某个activity.
㈩ android问题 AbsListView.LayoutParams 怎么用,要详解不要复制。
http://www.cnblogs.com/over140/archive/2011/06/07/2074019.html