-2

我有几个按钮。我想创建一个单独的类。当我看到这个按钮

<com.example.shoping.SettingsP.CustomButtons
                android:layout_width="110dp"
                android:layout_height="60dp"
                android:text="Settings"
                android:id="@+id/SettingsButton"
                android:background="#010101"
                android:textColor="#ffffff"
                android:gravity="center_vertical|center_horizontal"
                android:layout_alignParentRight="true"
                />

和班级

public class CustomButtons extends Button {

    public CustomButtons(Context context) {
        super(context);
    }

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

    public CustomButtons(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}

我想创建三个按钮,当按下这些按钮来填充新的 Activity。谢谢。

4

2 回答 2

0

Alex 给出的建议是一个很好的方法,或者您可以创建一个 xml 布局,在其中放置这些按钮并以这种方式将此布局包含在所有其他布局中

<include
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    layout="@layout/your_layout_with_buttons" />

另一个想法可能是这个:您可以创建一个扩展 Activity 的类(例如 MasterActivity)。在这个类中以这种方式覆盖 setContentView

@Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);

        Button button1=new Button(this);
        Button button2=new Button(this);
        Button button3=new Button(this);
        /**
         * set your buttons layout params as you need
         */
        ((ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content)).addView(button1);
        ((ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content)).addView(button2);
        ((ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content)).addView(button3);
    }

getWindow().getDecorView().findViewById(android.R.id.content)给你根视图,它必须是一个VIewGroup(如LinearLayout、RelativeLayout等)

当您调用活动(必须扩展 MasterActivity)setContentView 时这样做,将显示视图并根据 LayoutParams 添加按钮。您还可以使用根视图的类型设置不同的 LayoutParamsinsance of

希望这有帮助

于 2013-08-02T14:57:34.053 回答
0
protected void onFinishInflate () {

        Button b1 = (Button)findViewById(R.id.b1);
        b1.setOnClickListener(this);

        Button b2 = (Button)findViewById(R.id.b2);
        b2.setOnClickListener(this);

        Button b3 = (Button)findViewById(R.id.b3);
        b3.setOnClickListener(this);
}

public void onClick(View view) {
        switch (view.getId()){
             ...........
        }
}

所以我做到了。谢谢!

于 2013-08-02T15:29:39.637 回答