我在我的android應用程序中使用了本地化,並且使用了一些翻譯,文本不適合TextView,沒有我指定它,它添加了三個點到它的結尾。我知道這是因爲文本不適合,但我沒有指定它來做到這一點。我試圖縮放文本以適合它,但它不起作用,有人可以告訴我爲什麼,它會在結尾添加三個點,而不是縮放它以適合。我的代碼完美適用於所有其他不適合但包含兩種語言的文本。Android爲什麼我在TextView的文本末尾添加了3個點
我可以上傳代碼,但對我的其他本地化來說工作正常,我只想知道爲什麼它會在最後添加三個點?由於
編輯:
它是頭一個自定義佈局。
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_gradient"
android:orientation="vertical"
android:tag="title" >
<TextView
android:id="@+id/title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:singleLine="true"
android:ellipsize="none"
android:background="@color/solid_red"
android:gravity="center"
android:paddingBottom="3dp"
android:text="@string/Hearing_Test"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/solid_white"
android:textStyle="bold" />
<ImageButton
android:id="@+id/info_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="#0000"
android:padding="10dp"
android:onClick="infoView"
android:src="@drawable/info" >
</ImageButton>
風格:
<style name="MyCustomTheme" parent="Theme.Sherlock">
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarStyle" tools:targetApi="11">@style/MyActionBar</item>
<item name="android:textCursorDrawable">@null</item>
</style>
<style name="MyActionBar" parent="@style/Widget.Sherlock.ActionBar">
<item name="android:background" tools:targetApi="11">@drawable/title_gradient</item>
<item name="background">@drawable/title_gradient</item>
<item name="android:homeAsUpIndicator" tools:targetApi="11">@null</item>
<item name="homeAsUpIndicator">@null</item>
<item name="android:gravity">center</item>
</style>
Java類以縮放文本:
public void setTitleTextSize(final int textId, final Boolean displayInfoButton){
infoButton = ((Activity) context).findViewById(R.id.info_button);
titleText = (TextView) ((Activity) context).findViewById(R.id.title_text);
if(!displayInfoButton){
infoButton.setVisibility(View.GONE);
}
ViewTreeObserver customTitleScale = titleText.getViewTreeObserver();
customTitleScale.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
final int infoWidth = infoButton.getMeasuredWidth();
if(infoWidth !=0 || !displayInfoButton){
((Activity) context).runOnUiThread(new Runnable(){
@Override
public void run() {
if(Build.VERSION.SDK_INT >= 11.0){
TypedValue tv = new TypedValue();
((Activity) context).getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
actionBarWidth = ((Activity) context).getResources().getDimensionPixelSize(tv.resourceId);
}
DisplayMetrics metrics = new DisplayMetrics();
Display Screen = ((Activity) context).getWindowManager().getDefaultDisplay();
Screen.getMetrics(metrics);
int screenWidth = metrics.widthPixels;
if(displayInfoButton){
titleWidth = screenWidth - infoWidth - actionBarWidth;
} else {
titleWidth = screenWidth - actionBarWidth;
}
titleText.setText(textId);
String text = ((Activity) context).getResources().getString(textId);
titleText.setMaxWidth(titleWidth);
Log.d("TextView Width", "Width: " + titleWidth);
TextPaint paint = titleText.getPaint();
Rect rect = new Rect();
int textLength = text.length();
paint.getTextBounds(text, 0, textLength, rect);
float width = rect.left + rect.right;
Log.d("Text length pixels", "Pixels " + width);
if(rect.width() > titleWidth){
float scale = (float) titleWidth/(float) rect.width();
float textSize = titleText.getTextSize();
float scaleSize = (float) (textSize * (scale*0.8));
titleText.setTextSize(TypedValue.COMPLEX_UNIT_PX, scaleSize);
}
}
});
infoButton.getViewTreeObserver().removeOnPreDrawListener(this);
}
return false;
}
});
}
在Java類的if(rect.width() > titleWidth)
允許縮放比例g發生,除了兩種語言之外,它在任何地方都可以工作,它說rect width比titleWidth小,當它明顯不是!
Screetshot:
問題是有空間TextView的的紅色,我不希望,不知道如何刪除左側。
setHorizontallyScrolling方法展示你layout.xml用的TextView –
這些是你的菜單。 – njzk2
我不這是我的菜單,如果你看看java代碼,我把它考慮在內 – Paddy1990