【问题标题】:Dynamically set height of an EditText based on the content根据内容动态设置 EditText 的高度
【发布时间】:2017-10-14 06:33:16
【问题描述】:

我有一个编辑文本,我在其中使用 setText 将数据加载到编辑表单上。目前 editText 高度是固定的,如果文本大于 editText 高度,我无法立即看到全文。 有没有一种方法可以根据内容动态设置 EditText 的高度。

提前感谢您的帮助和建议

问候 回复

【问题讨论】:

  • 给我看看你的edittext的xml代码

标签: android android-layout android-edittext


【解决方案1】:

您可以将此代码用于您的 xml 文件:

<EditText
   android:id="@+id/edtFirstName"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:hint="@string/first_name"
   android:padding="5dp"
   android:textColor="@color/black"
   android:textSize="16sp" />

当您的编辑文本包含时,它会自动适应文本大小。

不要使用android:singleLine="true"android:minLines="1"android:maxLines="1"

【讨论】:

    【解决方案2】:

    尝试如下设置编辑文本的高度:

    android:layout_height="wrap_content"
    

    【讨论】:

      【解决方案3】:

      设置 android:layout_height wrap_content 是最好的方法。

      视图应该只大到足以包含其内容。

      使用DisplayMetrics 动态设置EditText的高度。

          DisplayMetrics metrics = getResources().getDisplayMetrics();
      
          int DeviceTotalWidth = metrics.widthPixels;
          int DeviceTotalHeight = metrics.heightPixels;
      

      如何?

      if(length()>n) // n is your String length
      editTEXT.getLayoutParams().height=DeviceTotalHeight*10/100;
      

      【讨论】:

        【解决方案4】:

        这可能对你有帮助,

        使用 android:layout_height ="wrap_content"android:inputType="textMultiLine" 是最好的方法

         <EditText
            android:id ="@+id/editText"
            android:layout_width ="match_parent"
            android:layout_height ="wrap_content"
            android:inputType="textMultiLine"
            android:hint ="Hint"
            android:scrollHorizontally="false" />
        

        我建议你使用 ScrollView 作为 EditText

        的父布局

        当你有一个更大的text 时,它可以防止你的EditText 从屏幕上截断(在屏幕之外)

        【讨论】:

          【解决方案5】:

          试试吧,这个可能有帮助-:

            edittext.getLayoutParams().width=50
          

              et= (CustomEditText) findViewById(R.id.et);
              ViewGroup.LayoutParams lp = et.getLayoutParams();
              lp.width = 100;
              lp.height = 100;
              et.setLayoutParams(lp);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-12
            • 2023-03-26
            • 1970-01-01
            相关资源
            最近更新 更多