gpt4 book ai didi

android - 如何预览自定义 android 组件布局?

转载 作者:行者123 更新时间:2023-11-29 02:01:25 24 4
gpt4 key购买 nike

我创建了一个扩展 RelativeLayout 的自定义 View ,我想预览它在设计器中的外观。

java是这样的:

// The view for a snap in the search/browse fragment.
public class MyView extends RelativeLayout
{
public MyView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.the_layout, this);
}

public void setData(String text)
{
mText.setText(text);
}

// *** Views ***
private TextView mText;

@Override
protected void onFinishInflate()
{
super.onFinishInflate();

mText = (TextView)findViewById(R.id.text);
}
}

XML 是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<!-- (And lots more views) -->
</RelativeLayout>

但是这有一些问题:

  1. 这实际上创建了一个 RelativeLayoutRelativeLayout 内这是毫无意义的。可以通过更改XML来解决<RelativeLayout><merge>但是我根本无法预览布局!
  2. 我想使用 isInEditor() java 中的函数(或它所调用的任何名称)来添加一些用于预览目的的示例数据,但我找不到一种方法来告诉 XML 编辑器它应该显示我的类的预览而不是实际的 XML。<

我能想到的一个不令人满意的解决方案是创建一个空的 preview.xml只有 <com.foo.bar.MyView/> 的文件在里面……但这似乎有点傻。有没有更好的办法? (我并不像关心预览那样关心编辑,因为 - 让我们面对现实吧 - Eclipse/ADT 太慢且不稳定,无法进行图形布局编辑。)

最佳答案

如果我正确理解您的问题,我会说解决方案是将您的 xml 布局中的“RelativeLayout”标签(或与此相关的任何其他标签)替换为“your.packagename.MyView”,如下所示:

<your.packagename.MyView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<!-- (And lots more views) -->

</your.packagename.MyView>

如果您在运行您的应用程序时遇到有关 MyView 类的任何异常,请添加所有缺少的 super /父级构造函数。

我对几乎所有的自定义 xml 布局都这样做。使用 RelativeLayout、LinearLayout 或任何其他 GUI 类扩展您的类还可以让您更好地控制 GUI 的行为方式(因为您还可以覆盖父方法等)。

关于android - 如何预览自定义 android 组件布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com