2014-11-05 67 views
1

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

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

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

+1

您应该为每个布局给出适当的名称,以便您可以通过其名称来识别它们。 – joao2fast4u 2014-11-05 14:22:05

回答

0

无法在1个窗口中一次显示全部。但是你可以同时打开多个文件。

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

像:

enter image description here

2

下面是一个自包含的活动:

  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) 
     {} 
    } 

} 

(根据需要添加进口,改性剂,异常处理等)

0

现在,因为我过渡到Android Studio中,我看到有这样的功能。它被称为“导航编辑器”,一个可以触摸到形成主菜单:

工具>安卓>导航编辑

工作正是我需要的。这里是一个打印屏幕例如:

Navigation Editor example

这里只有2活动,但我有一些项目有40多个活动,这帮助我找到了我正确的快。 :)