是否有可能創建一個方法來擴充佈局(或動態創建它),添加特定的視圖(在本例中爲TextViews),然後將佈局重新設置爲視圖,以便我可以(以某種方式)把它嵌入到其他類的主佈局中,比如嵌套,但是動態添加元素?LinearLayout嵌套
1
A
回答
1
是有可能:
... onCreate()
{
setContentView(...);
ViewGroup myContainer=(ViewGroup)findViewById(R.id.myContainer);
View v=inflateMySpecialView();
//=<set layoutParams for the view if needed
myContainer.addView(v);
}
public View inflateMySpecialView()
{
ViewGroup viewgroup=(ViewGroup) getLayoutInflater().inflate(R.layout.my_custom_layout, null,false);
//do some stuff with the inflated viewgroup.
return viewgroup;
}
3
是的,您可以使用LayoutInflater類來擴充現有佈局。它會去是這樣的:
public static View GetLayout(final Context c){
final LayoutInflater inflater = LayoutInflater.from(c);
final View v = inflater.inflate(R.layout.activity_main, null);
//find the container where you want to insert your dynamic items
final LinearLayout placeholder = (LinearLayout) v.findViewById(R.id.linearLayout1);
//create the new textview
final TextView text = new TextView(c);
text.setText("Some text");
placeholder.addView(text, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
return v;
}
的問題問,這種觀點被返回到「其他類」,而其他的答案是從同一類這樣做 - 這意味着它有一個背景。爲了從另一個類中這樣做,你需要傳遞一個上下文,就像我在這裏做的那樣,或者其他的方式(如果你想要一個實例對象,就要調用構造器)。
1
是的,它是。我在我的應用程序中做了類似的事情。我正在寫一個flashcard應用程序,並使用scrollview向用戶顯示他們創建的所有套牌。該代碼是說:
public void FillDeckView(){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Deck testDeck = Deck.GetDeckFromDB();//Make a deck object from SQLite DB values
final int DECK_SIZE = 20;//Fill the view with this many decks
TableLayout scrollTable = (TableLayout) findViewById(R.id.scrollTable);
//This tableRow is in my main view
TableRow newTableRow = (TableRow) findViewById(R.id.tableRow4);
//This view I'm inflating is a separate android layout XML file
//I created, which shows the icon for the deck the user has made.
View deckViewBox = inflater.inflate(R.layout.deck_icons, null);
//Look, I'm getting a textview that's IN the deckViewBox, which is
//a separate View. Below, I'll change its text dynamically
TextView deckNameTV = (TextView) deckViewBox.findViewById(R.id.deckNameView);
int viewIndex = 1;
for(int i = 0; i < DECK_SIZE && testDeck != null; i++){
//First I'll change the text of the view, and then I'll add it in
deckNameTV.setText(testDeck.getName());
newTableRow.addView(deckViewBox);
if(i % 2 != 0){
//If we're on an odd number, make a new tableRow
newTableRow = new TableRow(getApplicationContext());
scrollTable.addView(newTableRow, viewIndex);
++viewIndex;
}
}
}//FillDeckView
基本上,你需要從充氣一個新的佈局視圖,然後調用findViewById()爲你創建新的視圖的方法。從那裏,就像操縱用戶可以看到的當前視圖一樣。你可以從那裏做任何你想做的事。
相關問題
- 1. 使用嵌套的LinearLayout
- 2. android嵌套LinearLayout調整
- 3. 嵌套的LinearLayout不可見
- 4. 重量比例在嵌套的LinearLayout
- 5. 嵌套LinearLayout中的TextView現在顯示
- 6. 如何避免嵌套的LinearLayout或RelativeLayout
- 7. 嵌套的linearLayout不起作用
- 8. 佈局故障:在LinearLayout中嵌套RelativeLayout
- 9. 滾動通過在嵌套的LinearLayout
- 10. RelativeLayout中的ImageViews嵌套在LinearLayout中
- 11. 在LinearLayout中嵌套列表視圖和LinearLayout會產生用戶界面問題
- 12. 對齊小部件的RelativeLayout在嵌套的LinearLayout一個widget
- 13. 如何在嵌套在LinearLayout中的RelativeLayout中實現gravity =「center_vertical」?
- 14. 嵌套的LinearLayout只顯示第一個視圖
- 15. 自定義視圖:嵌套linearlayout沒有顯示
- 16. 如何將一個嵌套的LinearLayout對齊頂部
- 17. 爲什麼LinearLayout不能正確顯示嵌套的FrameLayout?
- 18. GLSurfaceView父類即使嵌套在LinearLayout中也爲null
- 19. 使用嵌套的LinearLayout時Layout_weight不能正常工作
- 20. 嵌套surfaceview> Linearlayout>水平滾動視圖
- 21. Elasticsearch。嵌套查詢嵌套在嵌套
- 22. 嵌套視圖嵌套ViewModels
- 23. 按嵌套嵌套數組大小排序嵌套地圖
- 24. 嵌套
- 25. 嵌套GORM嵌入
- 26. NPE在自定義AlertDialog中設置嵌套LinearLayout的可見性嗎?
- 27. 在嵌入式LinearLayout中使用的onClick
- 28. 嵌套視圖與嵌套狀態
- 29. 嵌套類:從嵌套保護的類
- 30. 嵌套模板的嵌套條目
每個ViewGroup都有它自己的LayoutParams類。確保你已經導入了正確的佈局參數(或者當你創建它們的時候指定包) - 並且記住,爲父項輸入了參數,而不是被添加的項目。 –
我的進口很好,但錯誤在這裏。 –
將整個源代碼粘貼到您的pastebin中。 –