2016-12-21 3 views
1

私はWeekViewと呼ばれるカスタムCardViewオブジェクトを作成しようとしています。 WeekViewはCardViewを拡張します。私はXMLファイルにCardViewレイアウトを持っています。 WeekViewは、レイアウトをXMLファイルから「コピー」しますか?簡単に言えばXMLレイアウトファイルからカスタムCardViewオブジェクトを作成するにはどうすればよいですか?

、私はこれを行うことができるようにしたい:mainLayoutが空の線形レイアウトでの主な活動、で

WeekView weekCard = new WeekView(); 
mainLayout.addView(weekCard); 

を。 WeekCardは、XMLレイアウトファイルのカードのように見えるはずです。

<?xml version="1.0" encoding="utf-8"?> 

<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:tipbook="http://schemas.android.com/apk/res-auto" 
android:id="@+id/week_card_view" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginLeft="8dp" 
android:layout_marginRight="8dp" 
android:layout_marginTop="8dp" 
tipbook:contentPadding="12dp"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:text="Week View" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/week_view_title" 
     android:textSize="12sp" 
     android:textAlignment="gravity" 
     android:gravity="center" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:textColor="@android:color/darker_gray" 
     android:layout_marginTop="4dp" 
     android:layout_marginLeft="4dp" /> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     tipbook:srcCompat="@drawable/ic_more_vert_black_18dp" 
     android:id="@+id/week_settings_btn" 
     android:background="@color/cardview_light_background" 
     android:scaleX="1" 
     android:scaleY="1" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:tint="@color/cardview_shadow_start_color" 
     android:tintMode="src_in" 
     android:layout_marginRight="4dp" 
     android:layout_marginTop="4dp" /> 


    <LinearLayout 
     android:id="@+id/week_days" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="55dp" 
     android:layout_below="@id/week_settings_btn" 
     android:weightSum="7" 
     android:layout_marginTop="12dp" > 



    </LinearLayout> 

    <TextView 
     android:text="Last Week" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/week_days" 
     android:id="@+id/visible_week" 
     android:textSize="14sp" 
     android:textAlignment="gravity" 
     android:gravity="center" 
     android:layout_marginTop="12dp" /> 

    <ImageButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/week_days" 
     android:layout_marginTop="12dp" 
     tipbook:srcCompat="@drawable/ic_expand_more_black_18dp" 
     android:id="@+id/more_less_week" 
     android:scaleX="1" 
     android:scaleY="1" 
     android:tint="@color/common_google_signin_btn_text_light_default" 
     android:tintMode="src_in" 
     android:background="@color/cardview_light_background" 
     android:visibility="gone"/> 
</RelativeLayout> 
</android.support.v7.widget.CardView> 
+0

にアクセスするには

あなたがさらに詳しく説明できますか?そのビューをメインビューに直接追加したくないのにオブジェクトを渡す理由を教えてください。その理由は? –

答えて

1

再利用するレイアウトを含めるようにそのカードビュー

<include 
    android:id="@+id/some_id" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/your_card_layout" /> 

にリンクメインビューでincludeタグを使用します。

ここではXMLファイルの短縮バージョンです。それの内側の景色

View includedLayout = findViewById(R.id.some_id); 
Button buttonInsideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button); 
関連する問題