當前位置:首頁 » 安卓系統 » android控制項位置動態

android控制項位置動態

發布時間: 2023-12-11 17:19:04

A. 動態添加Android(安卓)控制項

動態添加Android(安卓)控制項步驟:
1、addView
添加控制項到布局容器
2、removeView
在布局容器中刪掉已有的控制項
3、使用
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 生成一個LinearLayout,作為布局容器來動態添加3個Button
final LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

// 生成3個Button
final Button btn1 = new Button(this);
btn1.setText("1");
btn1.setText("Button1");
final Button btn2 = new Button(this);
btn2.setText("2");
btn2.setText("Button2");
final Button btn3 = new Button(this);
btn3.setText("3");
btn3.setText("Button3");

// 動態把三個Button添加到
layout.addView(btn1);
layout.addView(btn2);
layout.addView(btn3);

// 點擊按鈕時,先把原來在布局容器layout上的刪掉,再添加上局容器layout,這樣本次添加的控制項就會排序到最後,以理解動態添加控制項的思路
btn1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
layout.removeView(btn1);
layout.addView(btn1);
}
});

// 同btn1一樣道理
btn2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
layout.removeView(btn2);
layout.addView(btn2);
}
});

// 同btn1一樣道理
btn3.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
layout.removeView(btn3);
layout.addView(btn3);
}
});
setContentView(layout);
}

}

B. 安卓怎麼設置button的位置設置

第一種,帶動畫的改變
//位移動畫 從左到右參數分別為
//x軸方向起始位置x差值 ,x軸方向結束位置x差值 , y軸方向起始位置y差值 ,y軸方向結束位置y差值
TranslateAnimation translateAnimation = new TranslateAnimation(fromXDelta,toXDelta,fromYDelta,toYDelta);
translateAnimation.setDuration(300); //設置動畫世界

button.setAnimation(translateAnimation);
上面的示例只是許多動畫中的一種簡單地位移動畫,如果有興趣可以查閱一下android動畫方面的知識
第二種,直接改變控制項的位置

這種方法裡面也有2種不用的情況
//這是第一種 直接付給此button新的xy坐標
button.setX();
button.setY();

C. 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);
}

D. 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);

E. android中獲得控制項的位置(相對於布局文件)

正確的代碼如下所示

java">TextViewtv=(TextView)findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
//這里執行獲取位置大小操作
intleft=tv.getLeft();
inttop=tv.getTop();
intbottom=tv.getBottom();
intright=tv.getRight();
//tv相對於父布局的坐標就得出來了

}
}

view的位置和大小是通過onLayout和onMeasure方法計算出來的,執行到activity的onCreate()方法時,尚未開始計算控制項的大小和位置,所以是取不到的

OnGlobalLayoutListener 是ViewTreeObserver的內部類,當一個視圖樹的布局發生改變時,可以被ViewTreeObserver監聽到,這是一個注冊監聽視圖樹的觀察者(observer),在視圖樹的全局事件改變時得到通知

除了OnGlobalLayoutListener ,ViewTreeObserver還有如下內部類:


interfaceViewTreeObserver.OnGlobalFocusChangeListener

當在一個視圖樹中的焦點狀態發生改變時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnGlobalLayoutListener

當在一個視圖樹中全局布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnPreDrawListener

當一個視圖樹將要繪制時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnScrollChangedListener

當一個視圖樹中的一些組件發生滾動時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnTouchModeChangeListener

當一個視圖樹的觸摸模式發生改變時,所要調用的回調函數的介面類

F. android怎樣動態生成布局文件,指定控制項顯示位置

控制項位置發生改變時
用sharedpreferences記錄控制項位置
第二次進入時讀取記錄了的內容,動態生成布局

熱點內容
國圖資料庫 發布:2024-11-29 10:34:15 瀏覽:540
vpn免流伺服器搭建 發布:2024-11-29 10:26:12 瀏覽:244
c源文件編譯後的擴展名為 發布:2024-11-29 10:08:40 瀏覽:923
腳本自動登錄 發布:2024-11-29 09:55:27 瀏覽:62
安卓的無線網路在哪裡 發布:2024-11-29 09:54:13 瀏覽:652
谷歌瀏覽器打開ftp 發布:2024-11-29 09:46:30 瀏覽:668
熱線女孩ftp 發布:2024-11-29 09:46:29 瀏覽:71
安卓作曲哪個軟體好用 發布:2024-11-29 09:29:30 瀏覽:903
怎麼看撥號伺服器ip 發布:2024-11-29 09:28:17 瀏覽:931
王者配置怎麼樣 發布:2024-11-29 09:22:58 瀏覽:858