我让用户将文本输入到 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/