如何在java中检索特定视图对象的自定义属性?

时间:2017-06-02 10:13:47

标签: android android-xml android-styles

我有这种风格:

  <!-- EditText on a blue background -->
  <style name="BlueBGTextView" parent="@android:style/Widget.Material.Light.EditText">
    <item name="alfloatingToolbarStyle">@style/alfloatingToolbarDarkStyle</item>
  </style>

  <!-- default EditText -->
  <style name="AppThemeEditTextStyle" parent="@android:style/Widget.Material.Light.EditText">
  </style>

  <!-- default Theme -->
  <style name="AppTheme" parent="@android:style/Theme.Material.Light.NoActionBar"> 
    <item name="android:editTextStyle">@style/AppThemeEditTextStyle</item>
    <item name="@attr/BlueBGTextViewStyle">@style/BlueBGTextView</item>    
  </style>

然后我通过构造函数在java中动态创建视图(EditText):

public ALEditText(Context context, AttributeSet attrs, int defStyleAttr,  int defStyleRes)

通过这种方式,我通过为其指定defStyleAttr来动态定义EditText的设计。

现在我有另一个库负责为editText创建一个弹出窗口。要知道要应用于弹出窗口的设计,库(即我构建的外部库)需要检查alfloatingToolbarStyle属性的值。但是我不知道图书馆如何检查特定视图的属性alfloatingToolbarStyle(图书馆只收到参数:(Context context) ...但是我可以添加(View view)如果它是&#39必要的

2 个答案:

答案 0 :(得分:0)

请使用以下代码在EditText标签中定义样式...

android:theme="@style/BlueBGTextView"

答案 1 :(得分:0)

负责对话框的图书馆不知道您的自定义属性或自定义样式,因为它们不属于它。

当您调用库来创建对话框时,要使用的样式应作为参数传递,因此定义要使用的样式的逻辑应由调用库而不是库本身的代码处理。