在自定义视图构造函数中获取android:ellipsize属性的值
如何获得自定义View
(扩展TextView
)中的属性android:ellipsize
的值?
我尝试了这些方法,但没有奏效:
Log.d(TAG, attrs.getAttributeIntValue(ANDROID_NAMESPACE, "ellipsize", -1)); Log.d(TAG, attrs.getAttributeValue(ANDROID_NAMESPACE, "ellipsize")); Log.d(TAG, attrs.getAttributeUnsignedIntValue(ANDROID_NAMESPACE, "ellipsize", 111)); Log.d(TAG, attrs.getAttributeListValue(ANDROID_NAMESPACE, "ellipsize", new String[] {"x", "marquee"}, -1));
注意: attrs
是AttributeSet
(构造函数参数), ANDROID_NAMESPACE
是"http://schemas.android.com/apk/res/android"
。
在这个例子中(Kotlin), getAttributeValue
方法适用于我:
import android.content.Context import android.util.AttributeSet import android.widget.TextView class Text(context: Context, attrs: AttributeSet) : TextView(context, attrs) { init { println("ellipsize: " + attrs.getAttributeValue( "http://schemas.android.com/apk/res/android", "ellipsize" ) ) } }
它打印:
11-20 20:49:18.808 26804-26804/com.package.app I/System.out: ellipsize: 1
对于这个观点: