2011-05-16 91 views
0

我有下面的類(包括到另一個類)延伸按鈕機器人,XML佈局

class RecordButton extends Button { 
    boolean mStartRecording = true; 

    OnClickListener clicker = new OnClickListener() { 
     public void onClick(View v) { 
      onRecord(mStartRecording); 
      if (mStartRecording) { 
       setText("Stop recording"); 
      } else { 
       setText("Start recording"); 
      } 
      mStartRecording = !mStartRecording; 
     } 
    }; 

    public RecordButton(Context ctx) { 
     super(ctx); 
     setText("Start recording"); 
     setOnClickListener(clicker); 
    } 
} 

按鈕的顯示用下面的代碼是由:

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    LinearLayout ll = new LinearLayout(this); 
    mRecordButton = new RecordButton(this); 
    ll.addView(mRecordButton, 
     new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      0)); 
    setContentView(ll); 
} 

如何可以定義將按鈕佈局放入.xml文件中而不是在java代碼中執行?

我已經試過了:

<AudioRecordTest.test.RecordButton 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:id="@+id/record" /> 

但它不工作...

非常感謝,

約阿希姆

+0

嘗試使用完整的軟件包名稱(例如,com.joachim.AudioRecordTest.test.RecordButton,或任何您的軟件包) – kcoppock 2011-05-16 22:44:20

回答

2

我明白 「(列入其他類)」因爲你有一個內部類RecordButton

假設你的包是AudioRecordTest.test(這將是一個非常糟糕的選擇名稱)和您RecordButton類是一個內部類AudioRecord.class的,你需要使用:

<view class="AudioRecordTest.test.AudioRecord$RecordButton" 

使用$標誌分開內部類。您需要在引號內寫入限定名稱。此外,請確保您創建了公共靜態類,否則它將不可見。

順便說一句:任何特定的原因,你創建它作爲一個內部類而不是分開?

+0

嗨Aleadam, 感謝您的幫助!確實,我應該使用 仍然有一些工作不正常。與此xml相關的Java代碼應該如何?或者你有沒有任何代碼做類似的例子? 我使用內部類的原因純粹是爲了測試,如果將這個類放在單獨的文件中更好或更容易,我會這樣做。 非常感謝, 喬 – joachim 2011-05-19 19:42:56

+0

,你將需要使用像'mRecordButton =(RecordButton)findViewById(R.id.record);',但要確保你的RecorButton條目的佈局裏面,你用'充氣的setContentView( );'。 – Aleadam 2011-05-20 05:41:35