2017-06-28 25 views
0

XMLプレビューアにクラスがないというエラーが表示されます。だから私はプレビューで私のレイアウトを見ることができませんが、私はアプリを実行すると、私はすべてうまく見ることができます。Androidスタジオ3.0のクラスがありませんcanary 4 ui preview

クラスは私のアンドロイドスタジオプロジェクト内でモジュール内部にあり、そのように含まれています:

dependencies { 
    compile project(":styleguide") 
} 

そして、このようなXMLで使用:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="64dp" 
    android:orientation="vertical"> 

     <com.company.packagename.buttons.SecondaryButtonLink 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"/> 

</LinearLayout> 

、ボタンは次のようになります。

<merge xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/base_secondary_button_link_ll" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/button_height" 
      android:clickable="true" 
      style="@style/SelectableItemBackground" 
      android:orientation="horizontal"> 

    <com.company.packagename.textviews.LabelTextView 
     android:id="@+id/secondary_button_link_title_tv" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:textColor="@drawable/selector_secondary_button_link" 
     android:drawableRight="@drawable/arrow_light_blue" 
     android:drawablePadding="@dimen/button_icon_left_margin"/> 

</merge> 

ボタンクラスの背後にあるコードは、次のとおりです。

class SecondaryButtonLink @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 
) : LinearLayout(context, attrs, defStyleAttr) { 
    init { 
     initializeView(attrs) 
    } 

    private fun initializeView(attrs: AttributeSet?) { 
     val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 
     inflater.inflate(R.layout.secondary_button_link, this) 

     if (attrs == null) return 
     checkForImage(attrs) 
     val typedArray = context.obtainStyledAttributes(attrs, R.styleable.StyleGuideButton) 
     if (typedArray.hasValue(R.styleable.StyleGuideButton_title)) { 
      setButtonTitle(typedArray) 
     } 

    } 

    private fun setButtonTitle(typedArray: TypedArray) { 
     for (i in 0..typedArray.indexCount - 1) { 
      val attr = typedArray.getIndex(i) 
      if (attr == R.styleable.StyleGuideButton_title) { 
       secondary_button_link_title_tv.text = typedArray.getString(attr) 
      } 
     } 
    } 

    private fun checkForImage(attrs: AttributeSet){ 
     val typedArray = context.obtainStyledAttributes(attrs, R.styleable.SecondaryButtonLink) 
     if (typedArray.hasValue(R.styleable.SecondaryButtonLink_rightimage)) { 
      setImage(typedArray) 
     } 
    } 

    private fun setImage(typedArray: TypedArray){ 
     for (i in 0..typedArray.indexCount - 1) { 
      val attr = typedArray.getIndex(i) 
      if (attr == R.styleable.SecondaryButtonLink_rightimage) { 
       secondary_button_link_title_tv.setCompoundDrawablesWithIntrinsicBounds(null, null, typedArray.getDrawable(attr),null) 
      } 
     } 
    } 
} 

プレビューアに表示されない理由を特定できないようです。なぜ誰もが表示されないアイデアはありますか?

答えて

0

アンドロイドスタジオカナリア4にバグがあります。カナリア1を使用するには、カナリア1を使用する必要があります。 :)

関連する問題