在右侧我使用textview显示所选时区,如果用户选择它,则会根据我正在显示值的选择打开警告对话框。现在问题是我的时区值太长,那么它将不显示外观如下面的图像..我必须用“ ... ”替换它,如果它超过..如果我设置最大长度它将适用于这个小设备..但文本视图大小将改变基于设备宽度。所以我对如何处理这个问题感到困惑..请你帮我解决这个问题。
<LinearLayout
android:layout_width="match_parent"
android:minHeight=“60dp”
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom=“10dp”
android:visibility="visible">
<EditText
android:id="@+id/etZipCode"
android:padding=“15dp”
android:layout_marginBottom=“10dp”
android:singleLine=true
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:maxLength=“8“
android:inputType="text"
android:imeOptions="actionNext" />
<TextView
android:padding=“15dp”
android:layout_marginBottom=“10dp”
android:singleLine=true
android:layout_width="match_parent"
android:minHeight="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableRight="@drawable/ic_dropdown_pin"
android:layout_marginBottom=“10dp“
android:layout_marginLeft=“5dp”/>
</LinearLayout>
答案 0 :(得分:3)
建议的解决方案
android:ellipsize="end"
android:maxLines="1"
是正确的,但缺乏重要的细节。您正在向TextView应用右侧的复合Drawable ..要使三个点出现在此场景中,您还必须将android:drawablePadding="{something}dp"
属性应用于TextView。
希望它有所帮助!
答案 1 :(得分:2)
添加from lxml import html
import requests
page = requests.get('http://eoddata.com/stocklist/SGX/Z.htm')
tree = html.fromstring(page.content)
tree1 = tree.xpath('//td/a[contains(@href,"/stockquote/SGX")]/text()')
tree2 = tree.xpath('//tr[@class]/td/following-sibling::td/text()')
属性以及drawablePadding
和maxLines
。
试试这个,
ellipsize
下面的截图,
答案 2 :(得分:1)
实际上(...)只有在文本大小调整textView时才会出现三个点。我认为你需要提供三个属性,它会出现。
android:maxLines="1"
android:ellipsize="end"
android:paddingRight="15dp"//size occupy by your arrow drawable. try with 20dp also
答案 3 :(得分:0)
试试这个:
android:singleLine="true"
答案 4 :(得分:0)
you can do this by this method:
public static void addShowMoreDots(String targetString, TextView tvStringHolder, int charactersLimit, @Nullable final View.OnClickListener onDotsClickListener) {
if (targetString.length() > charactersLimit) {
String dotsString = " [ ... ]";
targetString = targetString.substring(0, charactersLimit).concat(dotsString);
SpannableString spannableDots = new SpannableString(targetString);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
if (onDotsClickListener != null) {
onDotsClickListener.onClick(view);
}
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false);
}
};
int startIndex = targetString.length() - dotsString.length() + 1; //from where [ of [...] starts
int endIndex = targetString.length();
spannableDots.setSpan(clickableSpan, startIndex, endIndex, 0); //
spannableDots.setSpan(new RelativeSizeSpan(1.5f), startIndex + 1, endIndex - 1, 0);
spannableDots.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getAppContext(), R.color.colorButtonGreen)), startIndex + 1, endIndex - 1, 0);
tvStringHolder.setMovementMethod(LinkMovementMethod.getInstance());
tvStringHolder.setText(spannableDots, TextView.BufferType.SPANNABLE);
} else {
tvStringHolder.setText(targetString);
}
}
答案 5 :(得分:0)
singleLine 已折旧
android:singleLine="true"
最好使用下面的代码,它支持在textview末尾带有3个点的各种maxLines
android:ellipsize="end"
android:maxLines="1"