當前位置:首頁 » 安卓系統 » layoutparamsandroid

layoutparamsandroid

發布時間: 2022-11-17 13:38:26

㈠ 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

熱點內容
甘肅隴南dns伺服器地址雲主機 發布:2025-03-05 00:43:52 瀏覽:384
一頓壓縮機 發布:2025-03-05 00:41:51 瀏覽:407
php二維數組拆分 發布:2025-03-05 00:33:24 瀏覽:198
游猴腳本 發布:2025-03-05 00:33:20 瀏覽:516
微信存儲的文檔 發布:2025-03-05 00:31:42 瀏覽:230
c語言中基本的數據類型包括 發布:2025-03-05 00:30:55 瀏覽:709
安卓小組件哪個好用 發布:2025-03-05 00:30:20 瀏覽:341
安卓如何下載錄屏精靈 發布:2025-03-05 00:15:22 瀏覽:486
攻城掠地怎麼開伺服器 發布:2025-03-05 00:11:31 瀏覽:483
怎麼看漢蘭達什麼配置 發布:2025-03-05 00:08:29 瀏覽:283