android - 如果文本比 View 长,动态 TextView 不会选取框

标签 android android-layout textview marquee

我让用户将文本输入到 EditText 中,然后 TextView 显示该文本。下面我让 TextView (preview_pane) 在每次 EditText 更新时更新它的文本,它工作正常。

EditText myed = (EditText) findViewById(R.id.text_input);
    myed.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
    myed.addTextChangedListener(new TextWatcher() {

        ...

        @Override
        public void afterTextChanged(Editable s) {
            TextView previewText = (TextView) findViewById(R.id.preview_pane);
            EditText et = (EditText) findViewById(R.id.text_input);
            previewText.setText(et.getText().toString());
            previewText.setSelected(true);
        }
    });

下面我将 TextView 的 xml 设置为选取框

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_margin="30sp"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="#FFFFFF">
    <TextView
        android:id="@+id/preview_pane"
        android:layout_width="wrap_content"
        android:layout_height="80sp"
        android:layout_gravity="center_horizontal"
        android:textSize="70sp"
        android:textColor="#DDDDDD"
        android:layout_marginTop="10sp"
        android:includeFontPadding="false"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        />
</RelativeLayout>

当文本短于 300sp 布局宽度时,它会正确地选取框。但是,如果它完全适合布局,我不希望它出现。而且,一旦文本变得太长而无法适应布局,它会省略 (...) 文本的结尾并且不会选取框,这与我想要的完全相反!

所以,我的问题是,我怎样才能让 textview 在文本足够短以适应布局时不对文本进行框选,而在文本太长时对文本进行框选而不省略它?

最佳答案

设置 TextView 宽度以匹配父级

<TextView
        android:id="@+id/preview_pane"
        android:layout_width="match_parent"
        android:layout_height="80sp"
        android:layout_gravity="center_horizontal"
        android:textSize="70sp"
        android:textColor="#DDDDDD"
        android:layout_marginTop="10sp"
        android:includeFontPadding="false"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        />

希望这对你有帮助..!

关于android - 如果文本比 View 长,动态 TextView 不会选取框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858258/

相关文章:

java - Android:LayoutParams 不接受浮点值

android - 如何在 Fragment - Android 中使用 PlaceAutoCompleteFragment 小部件?

android - 如何从内容 ://mms. 中检索彩信的日期

android - 在 Android 中,是否可以在运行时在单个 XML 布局的 TextView 中应用不同的主题,而无需创建自定义小部件?

android - 使用 onCreate 与 onRestoreInstanceState

android - 二进制 XML 文件第 2 行错误膨胀类 android.widget.RelativeLayout 尝试动态实现主题

android - 在 Android 中获取默认的 Divider

java - Android - 在 if else 语句之间使用相同的变量值

两行的 Android RadioButtons

iphone - iOS iphone uialertview 在横向添加了另一个 TextView