android動態布局文件
1. android怎樣動態生成布局文件,指定控制項顯示位置
控制項位置發生改變時
用SharedPreferences記錄控制項位置
第二次進入時讀取記錄了的內容,動態生成布局
2. android 如何實現動態添加布局
如下代碼:
LinearLayout layout = new LinearLayout(this);
TextView tx = new TextView(this);
tx.setText('我是動態添加的');
layout.addView(tx);
setContentView(layout);
這就動態添加了一個線性布局,並且在布局裡面加了一個textview
3. android程序中的布局文件
不是都寫在main.xml中。默認的主activity默認的布局文件時main.xml,如果布局不一樣,另一個activity設置另一個布局文件,和main.xml是並列的,也在layout文件夾下,使用setContentView(R.layout.XXX)設置。圖片通常都放在res/drawable文件夾中,drawable一共有三個文件夾,高,中,低三種解析度,放在哪個文件夾下自己決定吧。
4. android 動態設置布局寬度
例如設置一個圖片寬高 關鍵代碼:
//取控制項當前的布局參數
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams();
//設置寬度值
params.width = dip2px(MainActivity.this, width);
//設置高度值
params.height = dip2px(MainActivity.this, height);
//使設置好的布局參數應用到控制項
imageView.setLayoutParams(params);
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
高度除了可以設置成以上固定的值,也可以設置成wrap_content或match_content
ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT
1
2
1
2
在這里插入圖片描述
xml
5. android中怎麼動態的載入一個布局
由於前段時間項目需要,需要在一個頁面上載入根據不同的按鈕載入不同的布局頁面,當時想到用 tabhot 。不過美工提供的界面圖完全用不上tabhot ,所以想到了動態載入的方法來解決這一需求。在這里我整理了一下,寫了一個 DEMO 希望大家以後少走點彎路。
首先,我們先把界面的框架圖畫出來,示意圖如下:
6. android在指定布局文件動態生成控制項
package zcy.com;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
public class Show extends Activity {
private Button btNext;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show1);
btNext=(Button)findViewById(R.id.next);
btNext.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){//創建一個布局管理器控制項
LinearLayout linearLayout=new LinearLayout(Show.this);
setContentView(linearLayout);//設置orientation為horizontal,1表示為vertical
linearLayout.setOrientation(0);
TextView tvSecond=new TextView(Show.this);
tvSecond.setText("這是Android奉獻給你的第二個頁面");
Button btNext2=new Button(Show.this);
btNext2.setText("下一步");
btNext2.setId(2);
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
linearLayout.addView(tvSecond,lp1);
linearLayout.addView(btNext2,lp1);
btNext2.setOnClickListener(new OnClickListener(){
public void onClick(View view){ //這次只放置一個TextView不需要布局管理器
TextView tv3=new TextView(Show.this);
tv3.setText("恭喜你已來到最後一個頁面!");//直接讓頁面顯示一個TextView
setContentView(tv3);
}
});
}
});
}
}
這里涉及到幾個類的構造函數和方法,我把Android SDK文檔中的內容直接引用過來:
Public Constructors
LinearLayout(Context context)
LinearLayout(Context context, AttributeSet attrs)
public void setOrientation (int orientation)
Should the layout be a column or a row.
Related XML Attributes
android:orientation
Parameters orientation Pass HORIZONTAL or VERTICAL. Default value is HORIZONTAL.
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
This corresponds to the global attribute resource symbol orientation.
Public Constructors
LinearLayout.LayoutParams(Context c, AttributeSet attrs)
LinearLayout.LayoutParams(int width, int height)
addView方法的定義在ViewGroup類中
//Adds a child view with the specified layout parameters.
voidaddView(View child, ViewGroup.LayoutParams params)
//Adds a child view with the specified layout parameters.
void addView(View child, int index, ViewGroup.LayoutParams params)
看一下這里的繼承關系:
另外注意,為什麼在傳遞Context參數時必須用Show.this而不能直接用this呢?因為此時我們已經進入了一個匿名類new Button.OnClickListener()中,雖然這個匿名類還是在Show類,但是我們的代碼已經不再「直屬」於Show類了。
7. android 如何實現動態添加布局
通過使用LayoutInflater 每次點擊按鈕時候去讀取布局文件,然後找到布局文件裡面的各個VIEW 操作完VIEW
後載入進我們setContentView 方面裡面的要放的布局文件裡面,每次動態載入文件必需 調用
removeAllViews方法,清除之前的載入進來的 View 。是不是很簡單?當然動態載入VIEW
還有許多種方法,多嘗試不同寫法。可能會領會不一樣的心得,祝你早上掌握android 的開發技術。
主要原理:在一個分割出來的大的Layout中(如圖中的白色區域),使用layout.removeAllViews();和layout.addView();實現動態載入,其中要使用的LayoutInflater等。
8. android動態更新布局文件,然後生成ui界面,能實現嗎
可以。但是完全要用代碼來實現,不能使用xml文件來。onCreate裡面不用setContentView,直接new View,然後根據解析的xml文件,使用代碼載入布局。比如xml中有一個<Button id=1>haha</name>,那麼解析後就new Button,setId(1),setText("haha"),然後根據位置等信息,view.add(button)……就這樣一直加進去。
9. 很簡單的送分題又來了,高手還不進來android如何動態include布局文件,答得好的追加100分
inflate函數可以見xml布局文件刷成view,然後java中獲得activity的view的父節點,然後通過addview就可以動態加入你要的view了
10. android怎樣動態生成布局文件,指定控制項顯示位置
控制項位置發生改變時
用sharedpreferences記錄控制項位置
第二次進入時讀取記錄了的內容,動態生成布局