androidaddrule
① android開發 如何在相對布局中動態添加控制項
首先setMargin方法不是RelativeLayout的方法,而是RelativeLayout.LayoutParams的方法。
你應該這麼用:
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(-1, -1));
TextView mView = new TextView(this);
mView.setId(2);
mView.setText("this is a test text!");
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
-2, -2);
// layoutParams.setMargins(100, 100, 100, 100);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, -1);
layout.addView(mView, layoutParams);
上例是將一個TextView添加到RelativeLayout的底部。你可以把注釋行取消掉,把下一行注釋,再看下效果。
② android動態添加控制項,怎樣指定位置
首先你得定義一個 LayoutParams:
RelativeLayout.LayoutParams s = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
s.addRule(RelativeLayout.CENTER_IN_PARENT, -1);
//添加位置信息 -1表示相對於父控制項的位置 ,如果要相對某個平級控制項則參數是該控制項的ID
s.setMargins(10, 10, 10, 10);//設置左,上,右,下,的距離
上面的定義好了之後可以用了:
imgApple2.setLayoutParams(s);
insertLayout.addView(imgApple2,100,100);
③ 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
的上邊/下邊/左邊/右邊。
④ 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);
}
⑤ android 如何動態布局自定義view,不用XML.
可以直接new View來得到View對象來實現代碼布局。以下為示例代碼:
1.絕對布局
AbsoluteLayout abslayout=new AbsoluteLayout (this);
setContentView(abslayout);
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);
2.相對布局
RelativeLayout relativeLayout = new RelativeLayout(this);
setContentView(relativeLayout);
AbsoluteLayout abslayout=new AbsoluteLayout (this);
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);
3.線性布局
LinearLayout ll = new LinearLayout(this);
EditText et = new EditText();
ll.addView(et);
//動態添加布局的方法1. LinearLayout ll = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null); setContentView(ll); LinearLayout ll2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,ll); //這樣 main2 作為 main1的子布局 加到了 main1的 根節點下
//動態添加布局的方法2 addView. LinearLayout ll = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null); setContentView(ll); LinearLayout ll2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,null); ll.addView(ll2);
⑥ Android Studio如果在java中編寫布局,代碼放在哪個文件中什麼位置
1.使用代碼編寫一個底部選項卡的布局
2.整個頁面的容器布局(包含Fargment,分割線,選項卡)
private void initView(Context context) {
setBackgroundColor(0xfff6f6f6);
FrameLayout frameLayout=new FrameLayout(context);//選項界面容器
frameLayout.setId(FL_ID);
View lineView=new View(context);//分割線
lineView.setId(LINE_ID);
RelativeLayout.LayoutParams rlParams=new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
rlParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
rlParams.addRule(RelativeLayout.ABOVE , LINE_ID);
lineView.setBackgroundColor(lineColor);
RelativeLayout.LayoutParams rlParams2=new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, DensityUtils.dip2px(context, 1));
rlParams2.addRule(RelativeLayout.ABOVE , TAB_ID);
addView(frameLayout, rlParams);//選項界面容器
addView(lineView,rlParams2);//分割線
//選項卡容器
linearLayout=new LinearLayout(context);
linearLayout.setBackgroundColor(tabBgColor);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.setGravity(Gravity.CENTER_VERTICAL);
linearLayout.setId(TAB_ID);
tabNum=tabIcos.length;
for (int i = 0; i < tabNum; i++) {
View view = createIndicator(tabIcos[i], tabtxts[i], tabItemTvColor, "itemTag"+i, "icoTag" + i, "txtTag" + i);
view.setOnClickListener(OnClick);
if(i== nowTabIndex){//初始化選項卡
changeTab(view, i);
}
linearLay