2014-01-11 2 views
1

У меня есть простой пользовательский вид, который только расширяет LinearLayout и использовать простую схему XML:Как раздуть макет в EditMode?

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

    <ImageView 
     android:id="@+id/iv1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_image1" /> 

    <TextView 
     android:id="@+id/tv1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/text1" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/tv2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/text2" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 


</LinearLayout> 

И Java-код:

public class MyCustomView extends LinearLayout { 

    public MyCustomView(Context context) { 
     super(context); 
     init(context); 
    } 

    public MyCustomView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    @SuppressLint("NewApi") 
    public MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(context); 
    } 

    private void init(Context context) { 
     if (isInEditMode()) { 
      // How to inflate R.layout.my_custom_view here? 
     } else { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      inflater.inflate(R.layout.my_custom_view, this, true); 
     } 
    } 

} 

Я хочу, чтобы мой пользовательский вид будет показывать в редакторе макета Eclipse, а макет по умолчанию (R.layout.my_custom_view). Но он не может накачать и показывать исключение:

android.content.res.Resources$NotFoundException: Could not resolve resource value: 0x7F03000B. 
    at android.content.res.BridgeResources.throwException(BridgeResources.java:693) 
    at android.content.res.BridgeResources.getLayout(BridgeResources.java:271) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:395) 
    at ru.bartwell.myapp.MyCustomView.init(MyCustomView.java:29) 
    at ru.bartwell.myapp.MyCustomView.<init>(MyCustomView.java:18) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0( at sun.reflect.NativeConstructorAccessorImpl.newInstance( at sun.reflect.DelegatingConstructorAccessorImpl.newInstance( at java.lang.reflect.Constructor.newInstance( at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:422) 
    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:179) 
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207) 
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:727) 
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:758) 
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:727) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:373) 

Есть ли способ раздуть макет по умолчанию в EditMode?

ответ

1

Изменить

if(isInEditMode()) 

Для

if(!isInEditMode()) 
+0

Когда я делаю это я получаю исключение ресурсов $ NotFoundException, как описано. – BArtWell

+0

прокомментируйте первый конструктор и попробуйте. – R9J

+0

Показывает NotFoundException. – BArtWell

Смежные вопросы