我遇到了一个问题,即唯一的解决方案是使用AbsoluteLayout(只是为了在特定位置显示某些内容)。
我正在尝试复制AbsoluteLayout类,以避免在将来的版本中删除它并且我的应用程序停止工作。
但是获取此代码,首先,我将所有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?
答案 0 :(得分:8)
您需要复制来自attrs.xml
的declare-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();
}