2016-12-01 7 views
0

У меня есть list.xmlLayoutParams из EditText внутри ListView не работает должным образом, не может вводить любые символы в EditText

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.phongponix.trackingbodybuilding.MainActivity$PlaceholderFragment" 
    android:orientation="vertical" 
    > 

    <ListView android:id="@+id/lvExerciseList" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clipToPadding="false" 
     android:paddingBottom="50dp" 
     ></ListView> 
</LinearLayout> 

Мой list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:padding="20dp" 
    android:id="@+id/containerTest"> 


    <LinearLayout 
     android:id="@+id/first_panel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/imgExcercisePhoto" 
      android:layout_width="100dp" 
      android:layout_height="100dp" /> 

     <TextView 
      android:id="@+id/tvExerciseName" 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:text="aaa" /> 
    </LinearLayout> 
    <RelativeLayout android:id="@+id/rlRecordContainer" 
     android:layout_width="150dp" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

    </RelativeLayout> 


    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rvExcerciseRecords" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/first_panel" 
     android:clipToPadding="false" 
     android:scrollbars="horizontal"></android.support.v7.widget.RecyclerView> 

</LinearLayout> 

Я использую адаптер для моего списка, как ниже:

if (convertView == null) { 
      view = inflater.inflate(R.layout.list_item, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.title = (TextView) view.findViewById(R.id.tvExerciseName); 
      view.setTag(viewHolder); 
      LinearLayout container = (LinearLayout)view.findViewById(R.id.first_panel); 

      LinearLayout.LayoutParams layoutParamsWeight = new LinearLayout.LayoutParams(convertDpToPixel(activity, 30), convertDpToPixel(activity, 20)); 
      layoutParamsWeight.setMargins(0, 0, convertDpToPixel(activity, 5), convertDpToPixel(activity, 5)); 
      EditText etWeight = new EditText(activity); 
      etWeight.setWidth(convertDpToPixel(activity, 30)); 
      etWeight.setHeight(convertDpToPixel(activity, 20)); 
      //etWeight.setLayoutParams(layoutParamsWeight); 
      etWeight.setBackgroundColor(ContextCompat.getColor(activity, R.color.colorEditTextBox)); 
      etWeight.setInputType(InputType.TYPE_CLASS_NUMBER); 
      etWeight.setFocusableInTouchMode(true); 
      //etWeight.setId(currentWeightID); 
      container.addView(etWeight); 

      RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.rlRecordContainer); 
      renderRecordItemHead(activity, relativeLayout); 
      renderRecordItem(activity, relativeLayout, currentWeightID); 

      recyclerView = (RecyclerView) view.findViewById(R.id.rvExcerciseRecords); 
      LinearLayoutManager linearLayoutManager = new LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false); 
      linearLayoutManager.setStackFromEnd(true); 
      recyclerView.setLayoutManager(linearLayoutManager); 
      recyclerView.setAdapter(trackingPlanHorizontalAdapter); 


     } 

Как на картинке ниже, если я закомментировать (не использовать) LayoutParams, я могу ввести и увидеть символы мой EditText. Если я использую LayoutParams для EditText, я не могу ввести. Клавиатура появляется, когда я нажимаю на EditText, а затем теряется, поэтому всякий раз, когда я прикасаюсь к клавиатуре, она ничего не показывает.

enter image description here

+0

_до не воспринимайте мои слова всерьез * ваш вопрос не имеет смысла, если вы не применяете layoutParams, в ViewGroup применяются параметры по умолчанию, которые являются 'Wrap_CONTENT', если вы (phongtran) примените layoutparam, вы даете ему определенные размеры 'new LinearLayout.LayoutParams (convertDpToPixel (activity, 30)', поэтому они действуют так, im i right? – Elltz

+0

- клавиатура видна, когда вы нажимаете на edittext, в котором применяются макеты. ? –

ответ

0

Почему бы просто не использовать вид EditText в XML?

<EditText 
android:id = @+id/"edit_ text" 
android:text = "Edit text here" 
android:layout_width = 100dp 
android:layout_height = 100dp 
+0

Я хочу динамически генерировать представление в коде. Да, я думаю о том, чтобы изменить способ рендеринга сейчас. – phongtran

+0

Да, почему динамически генерировать текст редактирования, но не другие поля макета? –

1

Я столкнулся с такой же проблемой несколько дней назад. Но, по-видимому, на самом деле он редактировался, но из-за по умолчанию и размера текста EditText он не был подходящим в параметрах layout, которые я предоставил, и он обрезал лишнюю часть, чтобы она была невидима для меня. Попробуйте установить текст в формате small и padding 0. Будет работать

 Смежные вопросы

  • Нет связанных вопросов^_^