2017-10-20 5 views
0

私は縦のLinearLayoutを持っています。これは、横のLinearLayouts(行のように動作する)で塗りつぶしたいものです。これらのそれぞれは効果的に同一でなければなりませんが、その中のいくつかの項目は数字を使用します。例えば少し変更してLinearLayoutを繰り返す

:JavaScriptで

<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> 

、私は彼らの創造「自動化」に、このようなものを使用することがあります:

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

これらの作成を「自動化」する方法はあります、私はちょうど1つの「モデル」を持つことができますし、それを何回か反復して、毎回その番号を渡します。 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

関連する問題