2016-05-04 3 views
-2

У меня есть относительный макет и 'n' количество текстовых просмотров и edittext. Я хочу выравнивание какВыровнять динамически созданное текстовое изображение и редактировать текст в android

TextView EditText 
     Button 
    TextView EditText 
     Button 
    TextView EditText 
     Button 
    TextView EditText 
     Button 
    .......... 

Я попытался использовать параметры макета, но я получаю странные результаты. Вот мой код,

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.linearlayoutid); 
    final TextView[] myTextViews = new TextView[41]; 
    for (int i = 0; i < 41; i++) { 
     // create a new textview 
     rowTextView = new TextView(this); 
     RelativeLayout.LayoutParams paramsA = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     paramsA.addRule(RelativeLayout.RIGHT_OF, rowTextView.getId()); 
     rowTextView.setId(i); 
     // add the textview to the layout 
     relativeLayout.addView(rowTextView, paramsA); 
     myTextViews[i] = rowTextView; 

    } 

Для редактирования текста ..

final EditText[] editTextarray = new EditText[41]; 
    for (int i = 0; i < 41; i++) { 
     // create a new textview 
     final EditText editText = new EditText(this); 
     RelativeLayout.LayoutParams paramsB = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     editText.setText("edit"); 
     editText.setCursorVisible(true); 
     relativeLayout.addView(editText, paramsB); 
     editTextarray[i] = editText; 

    } 

Я применил layout_params, как это, но это не помогло. Любая помощь будет большой! Спасибо

+0

Почему вы не использовали линейную компоновку здесь? –

+0

Вы хотите, чтобы я использовал линейную компоновку без использования параметров? Его динамически генерируется. Как я могу иметь линейный макет? Он будет генерировать около 100 текстовых изменений динамически @SohailZahid – Anusha

+0

, если вы не используете относительные свойства макета, а затем просто используйте линейный макет с ориентацией. –

ответ

0

Я предлагаю вам использовать пользовательский макет и раздувать его программно.

создать макет состоит из TextView, EditText и Button с вашим желаемым выходом и раздуть его.

View v=LayoutInflater.from(this).inflate(R.layout.customLayout,null); 

и использовать переменную v для обозначения TextView, EditText и Button.

ваш customLayout.xml может быть что-то вроде этого:

<LinearLayout android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

Возьмите LinearLayout в вашем XML, имеющие ориентацию по вертикали, и добавить эту точку зрения в этом макете, чтобы создавать различные представления.

for (int i = 0; i < 20; i++) { 
    View v = inflater.inflate(R.layout.customLayout, null); 

    ll.addView(v); 
} 
+0

Можете ли вы изменить свой код и предоставить в качестве решения? @Ravi Rupareliya – Anusha

+0

извините, не могу дать вам весь код, может дать вам намек на это. Если люди занимут это за это, и я его приму. –

+0

LinearLayout lv = (LinearLayout) findViewById (R.id.lingleayoutid); , Должны ли мы обращаться к linearlayout с использованием id? Ll в вашем коде является ссылкой? – Anusha

0

добавить компоновки

layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/ll" 
     > 
     <TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="textview" 
      /> 
     <EditText 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Edittex" 
      /> 

    </LinearLayout> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/ll" 
     android:layout_centerHorizontal="true" 
     android:text="button" 
     /> 

</RelativeLayout> 

Добавить этот макет во время выполнения:

View view; 
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    for (int i = 0; i < 40; i++) { 

    view= inflater.inflate(R.layout.layout, null); 
    linearLayout.addView(view); 
    } 
+0

Можете ли вы рассказать мне, как передать динамические значения в текстовое представление сейчас? @Pradeep Gupta – Anusha

+0

добавить это для цикла TextView tvBuy = (TextView) view.findViewById (R.id.textview); tvBuy .setText («ваше значение»); –

+0

Ошибка отображения в выражении (LayoutInflator) ожидается @Pradeep Gupta – Anusha

0

Anusha попробовать это с LinearLayout

Тем не менее, если ваш дизайн идентичен Вы должны использовать наилучший подход списка.

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearlayoutid); 
     final TextView[] myTextViews = new TextView[41]; 
     final EditText[] editTextarray = new EditText[41]; 
     for (int i = 0; i < 41; i++) { 
      // create a new textview 
      rowTextView = new TextView(this); 
      myTextViews[i] = rowTextView; 
      linearLayout.addView(myTextViews[i]); 

      final EditText editText = new EditText(this); 
      editText.setText("edit"); 
      editText.setCursorVisible(true); 
      editTextarray[i] = editText; 
      linearLayout.addView(editTextarray[i]); 

     } 
0

Я предлагаю вам реализовать ListView для этого требования -

В соответствии с Вашим текущим подходом вы закончите вверх установки нескольких onClicklisteners для каждого из кнопок - если эта кнопка будет выбрать данные входа связанный с TextView/EditText - вы будете в конечном итоге писать много звонков массива и прочее

ListView - OnClick любого пункта вы можете стрелять один onClickListener где дифференцируются

PS: Bad дизайн повторить кнопка будет low textview/edittext, если кнопка, как ожидается, будет выполнять ту же самую/подобную функцию, скажем, сохранение - просто просмотрите список textview/edittext - общее действие кнопки где-нибудь на панели инструментов или ниже формы.