类扩展Button

时间:2013-08-02 13:21:16

标签: java android button

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

<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。 感谢。

2 个答案:

答案 0 :(得分: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添加按钮。 您还可以使用insance of

根据根视图的类型设置不同的LayoutParams

希望这个帮助

答案 1 :(得分: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()){
             ...........
        }
}

所以我做到了。谢谢!