我正在尝试在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个这样的按钮,而不再创建任何子代。
请帮帮我,建议我一些好的解决方案!!!
答案 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循环。