2014-05-11 130 views
-1

我想在Android中編寫代碼以顯示佈局中的5個自定義切換按鈕。我從互聯網上獲得了一個代碼來開發自定義切換按鈕。所以,我運行代碼,並且在佈局中有一個奇特的切換按鈕。如何在Android中創建動態自定義切換按鈕?

所以,現在我試圖從代碼中顯示5個這樣的幻想按鈕,但我沒有找到任何技術來做到這一點。

Java代碼的

package com.example.newcustomswitch; 

import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

}} 

XML代碼

<ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:mySwitch="http://schemas.android.com/apk/res-auto" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

      <com.example.newcustomswitch.MySwitch 
       style="@style/mySwitchStyle" 
       android:id="@+id/pickup4" 
       android:layout_gravity="center" 
       android:layout_marginTop="4dp" 
       android:layout_marginBottom="2dp" 
       android:layout_marginRight="4dp" 
       android:gravity="center" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       mySwitch:pushStyle="true" 
       mySwitch:textOnThumb="false" 
       mySwitch:thumbExtraMovement="9dp" 
       mySwitch:trackTextPadding="1dp" 
       mySwitch:thumb="@drawable/stoggle_copy_sm" 
       mySwitch:track="@drawable/sgroove_copy_sm" 
       mySwitch:textOn="Planned" 
       mySwitch:textOff="Un-Planned" 
       mySwitch:leftBackground="@drawable/sleft_background_copy_sm" 
       mySwitch:rightBackground="@drawable/sright_background_copy_sm" 
       mySwitch:backgroundMask="@drawable/smask_background_copy_sm" 
       /> 

</ScrollView> 

這是上面的靜態XML代碼,並將其在佈局顯示只有一個開關按鈕,我想顯示5這種佈局的按鈕,而不會創建更多的孩子。

請幫幫我,建議我一些好的解決方案!

回答

0

當您創建活動時,您需要添加更多的子項,無論是在XML文件本身還是以Java編程。對不起,這是沒有辦法的。

ScrollView只能有一個孩子,因此您需要在ScrollView內使用LinearLayout來託管您的自定義開關。

<ScrollView> 
    <LinearLayout android:orientation="vertical"> 
     <MySwitch /> 
     <MySwitch /> 
     <MySwitch /> 
     <MySwitch /> 
     <MySwitch /> 
    </LinearLayout> 
</ScrollView> 

如果要以編程方式添加視圖,您仍然需要LinearLayout。裏面你的活動,你可以自己實例化視圖,並將其添加到LinearLayout中,像這樣:

// suppose the LinearLayout has android:id="@+id/linear_layout" 
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout); 
MySwitch mySwitch = new MySwitch(this); 
linearLayout.addView(mySwitch); 

您可以添加許多意見這種方式。如果需要,可以使用for-loop。

+0

是這個我知道,但我想這樣做動態,如果我將輸入x = 5意味着然後5個按鈕應該顯示,如果x = 4然後4個按鈕等..請建議我,我怎麼能動態地做...... – MyProg

+0

您仍然需要LinearLayout。你總是可以使用'new'來實例化一個視圖。既然你可能會在Activity中這樣做,你可以將Activity本身作爲視圖構造函數的Context(例如'new MySwitch(this)')傳遞給它。使用'findViewById'獲得對LinearLayout的引用,然後可以調用'linearLayout.addView(...)'來添加視圖。你可以做X次。 – Karakuri

+0

是的朋友,我試過這個,MySwitch mySwitch = new MySwitch(this);但在MySwitch中出現錯誤..... – MyProg