Ответ 1
Необходимо установить атрибуты android:lines="1" android:singleLine="true"
https://code.google.com/p/android/issues/detail?id=33868
Мне сложно разобраться в этом. Я не могу воспроизвести на своем телефоне (nexus 4). Кажется, что это не влияет на все устройства, но у меня достаточно отчетов, в которых это разочаровывает, когда это происходит.
java.lang.ArrayIndexOutOfBoundsException: length=10; index=10
at android.text.StaticLayout.calculateEllipsis(StaticLayout.java:938)
at android.text.StaticLayout.out(StaticLayout.java:859)
at android.text.StaticLayout.generate(StaticLayout.java:524)
at android.text.StaticLayout.<init>(StaticLayout.java:147)
at android.widget.TextView.makeSingleLayout(TextView.java:6583)
at android.widget.TextView.makeNewLayout(TextView.java:6429)
at android.widget.TextView.onMeasure(TextView.java:6807)
at android.view.View.measure(View.java:16047)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1232)
at android.widget.TableRow.onMeasure(TableRow.java:114)
at android.view.View.measure(View.java:16047)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4921)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.TableLayout.measureVertical(TableLayout.java:476)
at android.widget.TableLayout.onMeasure(TableLayout.java:439)
at android.view.View.measure(View.java:16047)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4921)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16047)
at android.widget.ListView.measureScrapChild(ListView.java:1190)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1255)
at android.widget.ListView.onMeasure(ListView.java:1165)
at android.view.View.measure(View.java:16047)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4921)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16047)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4921)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16047)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16047)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4921)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2418)
at android.view.View.measure(View.java:16047)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2129)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1282)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1493)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1179)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4861)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Необходимо установить атрибуты android:lines="1" android:singleLine="true"
https://code.google.com/p/android/issues/detail?id=33868
Это ошибка. сообщается в андроиде, пожалуйста, игнорируйте, чтобы использовать start. https://code.google.com/p/android/issues/detail?id=33868
Вопрос
android:maxLines="1" android:ellipsize="middle"
, наше приложение выйдет из строя на некоторых устройствах.Решение
"android:maxLines"
, то для свойства "android:ellipsize"
поддерживается только End и Marquee.Ссылка
setEllipsize
добавлен в уровень API 1
void setEllipsize (TextUtils.TruncateAt where)
Заставляет слова в тексте длиннее ширины представления быть эллипсированными, а не разбитыми посередине. Вы также можете установить SetSingleLine() или setHorizontallyScrolling (boolean), чтобы ограничить текст одной строкой. Используйте null, чтобы отключить эллипсирование. Если setMaxLines (int) используется для установки двух или более строк, поддерживаются только END и MARQUEE (другие типы эллипсинга ничего не сделают).
Они должны были хотя бы добавить это к Lint!: S Чтобы исправить это, вы можете использовать настраиваемое текстовое изображение.
public class MyTextView extends TextView {
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
// this is to overcome the calculateEllipsis bug in some versions of android, I spotted it on 4.4.4 and 4.4.3
// see https://code.google.com/p/android/issues/detail?id=33868
if (Build.VERSION.SDK_INT >= 16) {
if (getMaxLines() == 1) {
setSingleLine(true);
}
}
}
}
ссылается на MyTextView в вашем xml вместо обычного текстового представления.
Array
индексы начинаются с 0
и заканчиваются на array length
минус 1
. Итак, ограничиваем цикл до 9
.
изменить цикл for, как показано ниже.
длина массива от 0 до 10
for (int i=0; i<9; i++)
{
System.out.println("value is ofposition"+yourArrayList[i]);
}