问题复制AbsoluteLayout - com.android.internal.R无法解析

时间:2011-08-15 17:48:33

标签: android android-layout

我遇到了一个问题,即唯一的解决方案是使用AbsoluteLayout(只是为了在特定位置显示某些内容)。

我正在尝试复制AbsoluteLayout类,以避免在将来的版本中删除它并且我的应用程序停止工作。

我正在从这里复制:http://www.google.com/codesearch#cZwlSNS7aEw/frameworks/base/core/java/android/widget/AbsoluteLayout.java&exact_package=android&q=AbsoluteLayout&type=cs

但是获取此代码,首先,我将所有mPadding(Direction)更改为getPadding(Direction),但LayoutParams构造函数仍然存在错误:

    public LayoutParams(Context c, AttributeSet attrs) {
        super(c, attrs);
        TypedArray a = c.obtainStyledAttributes(attrs,
                com.android.internal.R.styleable.AbsoluteLayout_Layout);
        x = a.getDimensionPixelOffset(
                com.android.internal.R.styleable.AbsoluteLayout_Layout_layout_x, 0);
        y = a.getDimensionPixelOffset(
                com.android.internal.R.styleable.AbsoluteLayout_Layout_layout_y, 0);
        a.recycle();
    }

com.android.internal.R cannot be resolved to a variable

我如何获得这些值?或者某个人已经拥有这个不属于谷歌的类,希望继续使用API​​?

1 个答案:

答案 0 :(得分:8)

您需要复制来自attrs.xmldeclare-styleable条目:

<declare-styleable name="AbsoluteLayout_Layout">
    <attr name="layout_x" format="dimension" />
    <attr name="layout_y" format="dimension" />
</declare-styleable>

只需将res/values/attrs.xml文件添加到您的应用程序中,然后将其复制到上面。


完成此操作后,请更新代码以引用程序包中的R

import com.your.package.R;
...
public LayoutParams(Context c, AttributeSet attrs) {
    super(c, attrs);
    TypedArray a = c.obtainStyledAttributes(attrs,
            R.styleable.AbsoluteLayout_Layout);
    x = a.getDimensionPixelOffset(
            R.styleable.AbsoluteLayout_Layout_layout_x, 0);
    y = a.getDimensionPixelOffset(
            R.styleable.AbsoluteLayout_Layout_layout_y, 0);
    a.recycle();
}