2015-08-28 71 views
0

我看了官方教程,但我不明白。如何在Android Studio中創建自己的控件

這是我的課:

public class mycontrol extends GridLayout { 

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

這是我RES /佈局/ mycontrol.xml:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="60dp" 
android:columnCount="4" 
android:rowCount="2" 
android:background="@drawable/cellshapeownstatus" 
android:paddingTop="5dp" 
android:id="@+id/my_status_id"> 

<TextView 
    android:textColor="#FFFFFF" 
    android:layout_column="1" 
    android:layout_row="0" 
    android:layout_marginLeft="10dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="doing stuff" 
    android:id="@+id/myOwnName" /></GridLayout> 

這是我RES /佈局/ activity_main.xml中,在這裏我想說明mycontrol:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="2dp" 
android:paddingRight="2dp" 
tools:context=".MainActivity" 
android:orientation="vertical" 
android:background="#0A3E61" 
android:id="@+id/activity_main_id"> 


<com.example.test.mycontrol 
    android:id="@+id/my_status" 
    android:layout_width="fill_parent" 
    android:layout_height="70dp"/></LinearLayout> 

設計器預覽中不顯示任何內容。我可以構建沒有錯誤,但當我嘗試在我的手機上運行時,它會立即崩潰。

回答

0

你並不需要延長GridLayout的,你忘了你膨脹的xml:

public class MyControl extends FrameLayout { 

    public MyControl(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     inflate(context, R.layout.mycontrol, this); 
    } 
} 

佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="2dp" 
android:paddingRight="2dp" 
tools:context=".MainActivity" 
android:orientation="vertical" 
android:background="#0A3E61" 
android:id="@+id/activity_main_id"> 


<com.example.test.MyControl 
    android:id="@+id/my_status" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 
+0

謝謝,做到了! :) – PectoralisMajor

0

Simplh使用 '包括'

<include 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
layout="@layout/mycontrol" 
/> 
相關問題