Глядя на другие ответы, кажется, что есть много вещей, которые могут вызвать эту ошибку. Вот еще один.
Если у вас
Тогда вы также можете получить ошибку, аналогичную
Не удалось установить (xxx) пользовательское проверенное свойство в [Свой пользовательский вид] ...: этот класс не ключевое значение, кодирующее для ключа [xxx].
Решение состоит в том, чтобы удалить старое свойство.
Откройте инспектор удостоверений для своего класса, выберите имя свойства в разделе «Определенные пользователем атрибуты времени выполнения» и нажмите кнопку «минус» (-).
На самом деле решение находится в классе DialogTitle в Google ... хотя оно не так эффективно, как принятое, оно намного проще и легко адаптируется.
public class SingleLineTextView extends TextView {
public SingleLineTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setSingleLine();
setEllipsize(TruncateAt.END);
}
public SingleLineTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setSingleLine();
setEllipsize(TruncateAt.END);
}
public SingleLineTextView(Context context) {
super(context);
setSingleLine();
setEllipsize(TruncateAt.END);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
final Layout layout = getLayout();
if (layout != null) {
final int lineCount = layout.getLineCount();
if (lineCount > 0) {
final int ellipsisCount = layout.getEllipsisCount(lineCount - 1);
if (ellipsisCount > 0) {
final float textSize = getTextSize();
// textSize is already expressed in pixels
setTextSize(TypedValue.COMPLEX_UNIT_PX, (textSize - 1));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
не вызывает рекурсии, ноmeasure(widthMeasureSpec, heightMeasureSpec);
. Поэтому я изменил на «меру (widthMeasureSpec, heightMeasureSpec); & quot; и это работает. Я только что протестировал на Android 4.4 (Nexus 5) и Android 4.0.4 (Samsung SII-LTE), и он отлично справился с обоими из них (я даже использовал собственный японский шрифт OTF). Захватите мое исправление здесь: gist.github.com/mrleolink/0dfeef749da1b854a44b – Leo 30 June 2014 в 13:06maxLines
иrequestLayout()
наsetText
, как сказал @adbie. FixedLineTextView - & gt; gist.github.com/Kevinrob/09742d9069e4e4e4ab66 – Kevin Robatel 24 April 2015 в 07:57