2017-10-20 48 views
0

我有一个垂直的LinearLayout,我想用水平LinearLayouts(它像行一样)填充。其中每一个都应该有效地相同,除了它们中的几个项目使用一个数字,每次都应该增加。重复LinearLayout有轻微变化

例如:

<LinearLayout android:id="@+id/row1" > 
    <SeekBar 
     android:id="@+id/seekBar" 
     android:tag="1" 
    /> 
</LinearLayout> 
<LinearLayout android:id="@+id/row2" > 
    <SeekBar 
     android:id="@+id/seekBar" 
     android:tag="2" 
    /> 
</LinearLayout> 
<LinearLayout android:id="@+id/row3" > 
    <SeekBar 
     android:id="@+id/seekBar" 
     android:tag="3" 
    /> 
</LinearLayout> 

在JavaScript中,我可能会使用这样的事情“自动”他们的创作:

for (var i = 0; i < count; i++) { 
    child = document.createElement("div"); 
    child.id = "row" + i; 
    parent.appendChild(child); 
} 

是否有“自动”的这些创作的方式,这样我可以只有一个“模型”,然后迭代几次,每次都传入数字?我可以使用基于Java或基于XML的解决方案。

我已经尝试使用每一个,它解决了问题的一部分,但无法找到一种有效的方法来'传入'每次不同的数字。 (这些数字用于识别来自Java的行内的输入 - 如果有更好的方法来管理这些,那也可能有帮助)。

回答

1

您可以通过Java代码在活动打造布局 - 的onCreate

您可以布局
例如动态修改:构建3个seekbars和ID删除第一个搜索条。

public class MainActivity extends AppCompatActivity { 

    ArrayList<Integer> seekbarsID; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     seekbarsID = new ArrayList<>(); 

     LinearLayout layout = new LinearLayout(this); 

     layout.setOrientation(LinearLayout.VERTICAL); 
     layout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); 

     for (int i = 1; i < 4; i++) { 
      SeekBar seekbar = new SeekBar(this); 

      int id; 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
       id = View.generateViewId(); 

      }else{ 
       id = 99999999+i; 

      } 
       seekbar.setId(id); 
       seekbarsID.add (id); 

      seekbar.setTag(i); 
      layout.addView(seekbar); 



     } 


     setContentView(layout); 
     layout.removeView(findViewById(seekbarsID.get(0))); 

    } 
} 
+0

如果我希望能够在不同的片段中做到这一点,该代码是否应该在fragment.onCreate()方法或其他地方运行?我该如何使用findViewById()(或以其他方式访问布局)在该方法中(或在哪里运行)? – ZSmith

+0

其他地方。您需要将ID存储在全局变量中,您的系统可以将该ID回叫,您还需要将类或ID“布局”存储到全局变量以供将来处理。你也可以得到所有的孩子,并检查类的类型:https://stackoverflow.com/questions/8395168/android-get-children-inside-a-view – slee