2016-11-27 57 views
0

我想要製作的應用程序有很多類似的LinearLayouts和textViews,需要以編程方式創建並按特定順序放置在屏幕上。返回佈局或視圖的方法

所以我決定定義一個返回一個元素的方法,而對於furthur的用法,我會把這個方法放在一些循環中來產生其他元素。但是當我以這種方式創建視圖或佈局時,沒有任何內容顯示或者有時候應用程序崩潰,就好像它已經被髮送到addView()。它只在我在onCreate()中創建視圖/佈局時才起作用,然後我在那裏使用它。所以,我可以使用該方法創建我的佈局/視圖的任何想法?因爲他們有太多的,它是不可能通過一個在的onCreate() 創建它們一個這裏的方法:

public LinearLayout createLinearLayout(){ 
    TextView tv_day = new TextView(this); 
    tv_day.setWidth(LinearLayout.LayoutParams.MATCH_PARENT); 
    tv_day.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT); 
    tv_day.setGravity(Gravity.END); 
    tv_day.setText("27"); 


    LinearLayout ll_horizontal = new LinearLayout(getBaseContext()); 
    LinearLayout.LayoutParams ll_horizontal_params = new  LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT); 
    ll_horizontal.setLayoutParams(ll_horizontal_params); 
    ll_horizontal.setOrientation(LinearLayout.HORIZONTAL); 

    ll_horizontal.addView(tv_day); 
    return ll_horizontal; 
} 

,這是的onCreate(),它不與它一個TextView添加任何線性佈局:

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


    setContentView(R.layout.activity_month_view); 
    LinearLayout ll= createLinearLayout(); 

    LinearLayout mainLayout = (LinearLayout) findViewById(R.id.activity_month_view); 
    mainLayout.addView(ll); 
} 

回答

0

我想這應該有助於 - 在XML中添加一個空的線性佈局,一些ID。 - 參考代碼中的佈局 - 動態添加元素到該佈局

0

嘿只是檢查您的代碼。它的完美工作現在只是嘗試這種方法。

public LinearLayout createLinearLayout(){ 
    TextView tv_day = new TextView(this); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    tv_day.setLayoutParams(layoutParams); 
    tv_day.setGravity(Gravity.CENTER); 
    tv_day.setText("27"); 


    LinearLayout ll_horizontal = new LinearLayout(getBaseContext()); 
    LinearLayout.LayoutParams ll_horizontal_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT); 
    ll_horizontal.setLayoutParams(ll_horizontal_params); 
    ll_horizontal.setOrientation(LinearLayout.HORIZONTAL); 

    ll_horizontal.addView(tv_day); 
    return ll_horizontal; 
}