2016-07-20 2 views
1

У меня есть LinearLayout, как контактная форма для пользователя, чтобы редактировать его профиль. Однако размер editText просто не меняется независимо от того, какой размер я даю макету. Tyvm за любую помощь!Layout_weight в LinearLayout с ScrollView

<?xml version="1.0" encoding="utf-8"?> 
    <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:background="@color/first_grey" 
     android:orientation="vertical" 
     tools:ignore="ContentDescription"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/toolbar_all_activities" /> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="none" 
     android:fillViewport="true"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <LinearLayout 
       android:id="@+id/viewUploadPicture" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="25" 
       android:layout_marginTop="20dp" 
       android:clickable="true" 
       android:orientation="horizontal"> 

       <de.hdodenhof.circleimageview.CircleImageView 
        android:id="@+id/imgUserProfile" 
        android:layout_width="0dp" 
        android:layout_height="90dp" 
        android:layout_gravity="center_horizontal" 
        android:layout_weight="0.5" 
        android:src="@drawable/skate_boarder" /> 

       <TextView 
        android:layout_width="0dp" 
        android:layout_height="80dp" 
        android:layout_marginEnd="15dp" 
        android:layout_marginRight="15dp" 
        android:layout_weight="0.5" 
        android:gravity="center_vertical|start" 
        android:text="@string/user.edit.upload_photo" 
        android:textColor="@color/fourth_grey" 
        android:textSize="18sp" /> 

      </LinearLayout> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.first_name" /> 

      <EditText 
       android:id="@+id/txtEditProfileFirstName" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.last_name" /> 

      <EditText android:id="@+id/txtEditProfileLastName" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.favourite_hobby" /> 

      <EditText 
       android:id="@+id/txtEditProfileFavouriteHobby" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.birthday_date" /> 

      <LinearLayout 
       android:id="@+id/birthdayLayout" 
       android:layout_width="300dp" 
       android:layout_height="0dp" 
       android:layout_marginLeft="15dp" 
       android:layout_marginRight="15dp" 
       android:layout_marginTop="10dp" 
       android:layout_weight="50" 
       android:orientation="horizontal"> 

       <EditText 
        android:id="@+id/txtDayBirthdayDate" 
        style="@style/editTextNumberRoundGrey" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="0.2" /> 

       <EditText 
        android:id="@+id/txtMonthBirthdayDate" 
        style="@style/editTextNumberRoundGrey" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="10dp" 
        android:layout_marginStart="10dp" 
        android:layout_weight="0.2" /> 

       <EditText 
        android:id="@+id/txtYearBirthdayDate" 
        style="@style/editTextNumberRoundGrey" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="10dp" 
        android:layout_marginStart="10dp" 
        android:layout_weight="0.5" /> 

      </LinearLayout> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.bio" /> 

      <EditText 
       style="@style/editTextRoundGreyBigger" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="120" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.city" /> 

      <EditText 
       android:id="@+id/txtEditProfileCity" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.languages" /> 

      <EditText 
       android:id="@+id/txtEditProfileLanguages" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <TextView 
       style="@style/editProfileTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="40" 
       android:text="@string/user.edit.password" /> 

      <EditText 
       android:id="@+id/txtEditProfilePass" 
       style="@style/editTextRoundGrey" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" /> 

      <Button 
       android:id="@+id/btnSubmitChangedData" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_marginLeft="15dp" 
       android:layout_marginRight="15dp" 
       android:layout_marginTop="15dp" 
       android:layout_weight="100" 
       android:padding="10dp" 
       android:background="@color/red" 
       android:text="@string/user.edit.submit" /> 

     </LinearLayout> 

    </ScrollView> 
</LinearLayout> 

ответ

0

Для изменения высоты EditText вы должны также предпочитают использовать атрибуты как MaxHeight, MinHeight, MaxLines, inputTypes и textAppreance атрибуты,

Это ниже пример может помочь вы:

<?xml version="1.0" encoding="utf-8"?> 
<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:orientation="vertical" 
    tools:ignore="ContentDescription"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="none" 
     android:fillViewport="true"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:layout_marginTop="20dp" 
      android:paddingLeft="5dip" 
      android:paddingRight="5dip" 
      > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="FirstName" /> 

      <!-- Person Name EditText--> 

      <EditText 
       android:id="@+id/txtEditProfileFirstName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="textPersonName" 
       android:maxLines="1" 
       android:maxLength="25" 
       android:textAppearance="?android:attr/textAppearanceMedium"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="LastName" /> 

      <EditText android:id="@+id/txtEditProfileLastName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="textPersonName" 
       android:maxLines="1" 
       android:maxLength="25" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="Hobby" /> 

      <EditText 
       android:id="@+id/txtEditProfileFavouriteHobby" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="text" 
       android:maxLines="2" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="Birthday Date" /> 

      <LinearLayout 
       android:id="@+id/birthdayLayout" 
       android:layout_width="300dp" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="15dp" 
       android:layout_marginRight="15dp" 
       android:layout_marginTop="10dp" 
       android:weightSum="1" 
       android:orientation="horizontal"> 
`enter code here`    <EditText 
        android:id="@+id/txtDayBirthdayDate" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.3" 
        android:inputType="number" 
        android:gravity="center" 
        android:layout_gravity="center" 
        android:maxLength="2" 
        /> 

       <EditText 
        android:id="@+id/txtMonthBirthdayDate" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="10dp" 
        android:layout_marginStart="10dp" 
        android:layout_weight="0.3" 
        android:gravity="center" 
        android:layout_gravity="center" 
        android:inputType="number" 
        android:maxLength="2" 
        /> 
       <EditText 
        android:id="@+id/txtYearBirthdayDate" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="10dp" 
        android:layout_marginStart="10dp" 
        android:layout_weight="0.4" 
        android:inputType="number" 
        android:gravity="center" 
        android:layout_gravity="center" 
        android:maxLength="4" 
        /> 
      </LinearLayout> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="Bio" /> 

      <!--MultiLine EdiText--> 

      <EditText 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textMultiLine" 
       android:minHeight="80dp" 
       android:maxLines="4" 
       android:isScrollContainer="true"/> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="City" 
       /> 
      <EditText 
       android:id="@+id/txtEditProfileCity" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="textPostalAddress" 
       android:maxLines="1" 
       android:maxLength="25" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="Languages" /> 
      <EditText 
       android:id="@+id/txtEditProfileLanguages" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="text" 
       android:maxLines="1" 
       android:maxLength="25" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:text="password" /> 
      <!--Password EditText--> 
      <EditText 
       android:id="@+id/txtEditProfilePass" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxHeight="40dip" 
       android:inputType="textPassword" 
       android:maxLines="1" 
       android:maxLength="25" 
       android:textAppearance="?android:attr/textAppearanceMedium"/> 

      <Button 
       android:id="@+id/btnSubmitChangedData" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_marginLeft="15dp" 
       android:layout_marginRight="15dp" 
       android:layout_marginTop="15dp" 
       android:layout_weight="1" 
       android:padding="10dp" 
       android:background="@color/red" 
       android:text="Submit" /> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 
+0

Я уже пробовал это, но он остается тем же –

+0

@ AntónioVieira, что вы пробовали? См. Мой пример ниже. Вы должны использовать атрибут 'android: weightSum', чтобы« android: layout_weight »имел какой-либо эффект. – Vinnie

+0

@ AntónioVieira Я отредактировал свой ответ. Просьба прочесть код примера. – Sathiamour

0

Атрибут android:layout_weight используется в сочетании с атрибутом android:weightSum. Ваши дети layout_weight s должны суммировать до weightSum их родительского макета.

Вы используете layout_weight много раз в своем коде xml без объявления weightSum. Без android:weightSum, android:layout_weight s не будет иметь эффекта. Например, если вы хотите две точки зрения в пределах родительского LinearLayout, чтобы охватить равномерно, вы можете сделать что-то вроде этого:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="100"> 

    <EditText 
     android:id="@+id/my_edit_text" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50" 
     android:hint="type something"> 

    <Button 
     android:id="@+id/my_button" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50" 
     android:text="a button"> 
</LinearLayout> 

Обратите внимание, что ваши взгляды ребенка layout_height s необходимо будет установить в "0dp" для вертикальной ориентации LinearLayout , Для горизонтальной ориентации вы должны установить дочерние представления layout_width s на "0dp".

В качестве другого примера, см принятого ответа на https://stackoverflow.com/a/7452788/4138919

Я также заметить, что вы смешиваете значения с плавающей точкой с запятой, не плавающими для layout_weight с. Подумайте о том, чтобы придерживаться того или другого для удобства чтения.

+0

Я провел несколько тестов в других макетах, и в том, что я имею в виду вопрос, а' weightSum' работает только для меня, если я определяю определенный размер для родителя (' ScrollView'), который я указываю 'weight_sum' (' LinearLayout'). Если я сделаю так, размер всего будет в порядке, 'EditText' и другой материал. Однако в этом случае это действительно должно быть 'match_parent', потому что это' ScrollView', поэтому я немного застрял. –

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