代码之家  ›  专栏  ›  技术社区  ›  Mir-Ismaili

在自定义视图构造函数中获取android:ellipsize属性的值

  •  0
  • Mir-Ismaili  · 技术社区  · 6 年前

    如何获取属性值 android:ellipsize 按惯例 View (这扩展了 TextView )?

    我尝试了这些方法,但没有成功:

    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));
    

    注:The attrs AttributeSet (构造函数参数)和 ANDROID_NAMESPACE "http://schemas.android.com/apk/res/android" .

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andrzej Zabost    6 年前

    这个 getAttributeValue 在本例中,方法对我有效(Kotlin):

    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

    对于此视图:

    <com.package.app.Text
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="start" />