如何在Android中创建动态自定义切换按钮?

时间:2014-05-11 00:38:37

标签: android button dynamic switch-statement

我正在尝试在Android中编写代码以在布局中显示5个自定义切换按钮。我从Internet获得了一个代码来开发Custom Switch按钮。所以,我运行代码,我在布局中得到了一个奇特的开关按钮。

所以,现在我试图在代码中显示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个这样的按钮,而不再创建任何子代。

请帮帮我,建议我一些好的解决方案!!!

1 个答案:

答案 0 :(得分:0)

您需要在创建活动时在XML文件本身或以Java编程方式添加更多子项。对不起,没有办法解决这个问题。

ScrollView只能有一个孩子,因此您需要使用LinearLayout内的ScrollView来托管您的自定义切换。

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

如果要以编程方式添加视图,则仍需要LinearLayout。在Activity中,您可以自己实例化视图并将它们添加到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循环。