2011-08-30 93 views
2

是否可以使用Java代碼寫入main.xml文件? 我想對佈局進行一些更改,但是它是基於從Java接收的值進行的?Android和XML佈局

回答

3

是的,你可以。閱讀更多關於YOURLAYOUT.LayoutParams

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html 使用addRule()並指定您需要的佈局對象。 更改值在此之前setContentView();

喜歡的東西:

RelativeLayout rl = new RelativeLayout(this); 
     RelativeLayout.LayoutParams rlp= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT); 
     rlp.addRule(RelativeLayout.VISIBLE); //set the rules and parameters before you do setLayoutParams(); 
     rl.setLayoutParams(rlp); 
     setContentView(rl); 

或者,如果你想從XML的實際佈局的變化,那麼你就充氣

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View v = inflater.inflate(R.layout.main, null); 
    RelativeLayout rl = (RelativeLayout)v.findViewById(R.id.relativeLayout1); 
    RelativeLayout.LayoutParams rlp= new RelativeLayout.LayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    rlp.addRule(RelativeLayout.VISIBLE); 
    rl.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    setContentView(rl); 
+0

這兩種方法都有效。我測試了它們。我最初設置了android:layout_width =「22px」和高度相同。他們證明工作。 :) –

1

你可以實際上並沒有在應用程序中更改任何xml佈局文件。一旦打包,佈局文件是隻讀的。你可以做什麼(我認爲這就是Nikola所建議的)是使用api來定義使用代碼的佈局,或者一旦從xml充滿布局就修改佈局。

如果您想要計算或檢索一些定義佈局的數據,然後記住下次運行應用程序的數據時,可以使用Android提供的data storage methods之一。