2016-07-05 131 views
0

我目前已经设置了我的代码,用于在行布局中显示父布局中的一个TextView和同一个布局中的3个textview。我的问题是,当我想将其设置在同一行中时,3个textview显示为3个不同的行。我想我需要一个孩子linerlayout但这并没有为我工作。这3个文本视图是动态的,因为输入的数据是动态的,所以我无法设置一定数量的文本视图。这里是我的我的代码将如何显示的代码示例....动态添加父布局并动态添加子布局

Screenshot of 3 textviews in different rows

我的代码如下:

//initialize linearlayout 
public LinearLayout pickcontainerLayout; 


int counter = 0; 
//creating a new view by using functions, using keys and values from multimap 
     for (String key : myMultimap.keySet()) { 
      ArrayList<SaleOrder> sale = new ArrayList<>(); 
      for (SaleOrder s : myMultimap.get(key)) { 
       sale.add(s); 
      } 
      pickcontainerLayout.addView(containerLayoutfunction(counter, sale.size(), sale, key)); 
      View line = new View(getContext()); 
      line.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,1)); 
      line.setBackgroundColor(Color.rgb(255,255,255)); 
      pickcontainerLayout.addView(line); 
      counter++; 
     } 
private TextView newSku(int id, String sku) { 
    TextView skuView = new TextView(getContext()); 
    skuView.setId(id); 
    skuView.setText("SKU: " + sku); 
    /*LinearLayout.LayoutParams skuParams = new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT 
    ); 
    skuView.setLayoutParams(skuParams);*/ 
    skuView.setGravity(Gravity.LEFT); 
    return skuView; 
} 
private TextView newqty(int id, String qty) { 
    TextView qtyView = new TextView(getContext()); 
    qtyView.setId(id); 
    qtyView.setText("QTY: " + qty); 
    /*LinearLayout.LayoutParams qtyParams = new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT 
    ); 
    qtyView.setLayoutParams(qtyParams);*/ 
    qtyView.setGravity(Gravity.CENTER); 
    return qtyView; 
} 
private TextView newlocation(int id, String location) { 
    TextView loc = new TextView(getContext()); 
    loc.setId(id); 
    loc.setText("Location: " + location); 
    /*LinearLayout.LayoutParams locParams = new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT 
    ); 
    loc.setLayoutParams(locParams);*/ 
    loc.setGravity(Gravity.RIGHT); 
    return loc; 
} 
private LinearLayout containerLayoutfunction(int parentid, int rowId, ArrayList<SaleOrder> s, String key) { 
    LinearLayout layout = new LinearLayout(getContext()); 

    layout.addView(newSale(parentid, key)); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    for (int i = 0; i<rowId;i++) { 
     //LinearLayout layoutchild = new LinearLayout(getContext()); 
     //layoutchild.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     //layoutchild.setOrientation(LinearLayout.HORIZONTAL); 
     layout.addView(newSku(rowId,s.get(i).getSku())); 
     layout.addView(newqty(rowId,s.get(i).getQty())); 
     layout.addView(newlocation(rowId,s.get(i).getlocation())); 
    } 
    return layout; 
} 

回答

0

你应该换三个TextViews在的LinearLayout与水平方向,所以textviews将自动在同一行。容器将FILL_PARENT水平设置为LayuoutParam,而textview应该具有WRAP_CONTENT,重力分配给左(第一个),CENTER(第二)和右(第三)。

+0

将其设置为水平方向将使我的所有文本视图都位于同一行,并且我不希望这样,因此它必须保持垂直。除非有另外一种方式去解决它? – refugio

+0

您可以将第一个textview留在内部线性布局之外 – ddb