2014-11-05 66 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多個活動,這幫助我找到了我正確的快。 :)