【问题标题】:Preview all Android XML layout files in Eclipse在 Eclipse 中预览所有 Android XML 布局文件
【发布时间】:2015-01-01 17:58:24
【问题描述】:

是否可以一次在 Eclipse 中预览所有 Android XML 布局文件?

(我不认为以不同的屏幕分辨率、主题或 API 预览一个布局!)

我有许多类似的对话框,有时我需要预览所有布局以找到我需要的一个。

【问题讨论】:

  • 你应该为你的每一个布局命名适当的名字,这样你就可以通过它们的名字来识别它们。

标签: android eclipse file layout preview


【解决方案1】:

这是一个独立的活动:

  1. 动态加载所有布局 ID 值
  2. 有一个可以循环遍历所有布局的触摸监听器
  3. 在简短的 Toast 消息中显示当前布局名称

请求:
如果有人能建议一种方法以编程方式添加布局名称以在视图更新后显示在布局上,那就太好了。

public class MainActivity extends Activity 
{
    List<Integer> layoutIds = new ArrayList<Integer>();
    Map<Integer, String> layoutNameMap = new HashMap<Integer, String>();

    int curIdx = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        loadLayoutIds();

        showNext();   
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) 
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
            showNext();

        return true;
    }

    private void showNext()
    {
        if (curIdx >= layoutIds.size())
            curIdx = 0;

        int layoutId = (int) layoutIds.get(curIdx);

        setContentView(layoutId);

        String msg = layoutNameMap.get(layoutId);

        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();

        curIdx++;
    }

    private void loadLayoutIds()
    {
        try
        {
            Class<?> c = R.layout.class;
            Field[] fields = c.getDeclaredFields();

            for (Field field : fields) 
            {
                Class<?> t = field.getType();
                if(t == int.class)
                {
                    int layoutId = field.getInt(null);
                    String name = field.getName();

                    // Because /layout folder can have different layout files, 
                    // use some prefix to indicate which files are at the "activity level"
                    // This way the following IF controls which layout files make it in
                    if ( ! name.startsWith("activity_"))
                        continue;

                    Log.d("tag", "cur field = " + name + ", cur layoutId = " + layoutId );
                    layoutIds.add(layoutId);
                    layoutNameMap.put(layoutId, name);
                }
            }
        }
        catch (Exception e)
        {}
    }

}

(根据需要添加导入、修饰符、异常处理程序等)

【讨论】:

    【解决方案2】:

    您不能在 1 个窗口中同时显示它们。但您可以同时打开多个文件。

    可以让多个文件彼此相邻,也可以作为浮动窗口。

    喜欢:

    【讨论】:

      【解决方案3】:

      现在,自从我转移到 Android Studio 后,我看到有这样的功能。它被称为“导航编辑器”,可以在主菜单中访问它:

      工具 > Android > 导航编辑器

      完全按照我的需要工作。这是一个打印屏幕示例:

      这里只有 2 个活动,但我有一些项目有 40 多个活动,这有助于我快速找到合适的活动。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多