我在我的Android应用程序中使用本地化,并且使用一些翻译,文本不适合TextView,如果没有我指定它,它会在它的末尾添加三个点。我知道这样做是因为文字不合适,但我没有指定它来做这件事。我试图缩放文本以适应但它不起作用,有人可以告诉我为什么,它会将三个点添加到最后而不是缩放它以适应。我的代码适用于所有其他不适合两种语言的文本。
我可以上传代码,但它在本地化的其余部分工作正常,我只是想知道为什么它会在最后添加三个点?感谢
修改
它是标题的自定义布局。
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)
允许缩放发生,它可以在任何地方工作,除了两种语言,它表示矩形宽度小于titleWidth,当它公然不是!
Screetshot:
问题是textView左侧有空格,我不想要,也不知道如何删除。
答案 0 :(得分:0)
他不会缩放以适应。如果要执行此操作,则必须手动执行此操作。您可以更改ellipsize
属性以定义是否要查看...或
答案 1 :(得分:0)
在您的xml文件中尝试使用该TextView
机器人:scrollHorizontally = “真”
或以编程方式使用
setHorizontallyScrolling方法http://developer.android.com/reference/android/widget/TextView.html#setHorizontallyScrolling(boolean)