首頁>Program>source

android.R.attr.selectableItemBackground存在,但是如何以程式設計方式將其添加到ImageButton?

此外,我將如何在文件中找到答案? 在此處提到過,但我看不到任何解釋 實際使用.實際上,我似乎很少發現文件有用,但是我希望那是我的錯,而不是文件的錯。

最新回復
  • 9天前
    1 #

    這裏是在此處使用答案的示例:如何在代碼中获取attr引用 ?

       // Create an array of the attributes we want to resolve
        // using values from a theme
        // android.R.attr.selectableItemBackground requires API LEVEL 11
        int[] attrs = new int[] { android.R.attr.selectableItemBackground /* index 0 */};
        // Obtain the styled attributes. 'themedContext' is a context with a
        // theme, typically the current Activity (i.e. 'this')
        TypedArray ta = obtainStyledAttributes(attrs);
        // Now get the value of the 'listItemBackground' attribute that was
        // set in the theme used in 'themedContext'. The parameter is the index
        // of the attribute in the 'attrs' array. The returned Drawable
        // is what you are after
        Drawable drawableFromTheme = ta.getDrawable(0 /* index */);
        // Finally free resources used by TypedArray
        ta.recycle();
        // setBackground(Drawable) requires API LEVEL 16, 
        // otherwise you have to use deprecated setBackgroundDrawable(Drawable) method. 
        imageButton.setBackground(drawableFromTheme);
        // imageButton.setBackgroundDrawable(drawableFromTheme);
    

  • 9天前
    2 #

    如果您使用的是AppCompat,則可以使用以下代碼:

    int[] attrs = new int[]{R.attr.selectableItemBackground};
    TypedArray typedArray = context.obtainStyledAttributes(attrs);
    int backgroundResource = typedArray.getResourceId(0, 0);
    view.setBackgroundResource(backgroundResource);
    typedArray.recycle();
    

  • 9天前
    3 #

    這對我和 TextView都適用 :

    // Get selectable background
    TypedValue typedValue = new TypedValue();
    getTheme().resolveAttribute(R.attr.selectableItemBackground, typedValue, true);
    clickableTextView.setClickable(true);
    clickableTextView.setBackgroundResource(typedValue.resourceId);
    

    因為我使用AppCompat庫,所以我使用 R.attr.selectableItemBackground 不是 android.R.attr.selectableItemBackground .

    我认為 typedValue.resourceId 拥有来自 selectableItemBackground的所有绘画 比使用 TypeArray#getResourceId(index, defValue)TypeArray#getDrawable(index) 在给定的 index只能檢索一个可绘製物件

  • 9天前
    4 #

    尝試此方法:

    public Drawable getDrawableFromAttrRes(int attrRes, Context context) {
        TypedArray a = context.obtainStyledAttributes(new int[] {attrRes});
        try {
            return a.getDrawable(0);
        } finally {
            a.recycle();
        }
    }
    

    //然後像這樣呼叫它:

    getDrawableFromAttrRes(R.attr.selectableItemBackground, context)
    // Example
    ViewCompat.setBackground(view,getDrawableFromAttrRes(R.attr.selectableItemBackground, context))
    

  • windows:linux檔案名無效吗?
  • 如何在Nodejs指令碼中分离生成的子程序?