将ButtonView定义为视图还是按钮相同?

时间:2014-05-15 12:33:54

标签: android xml android-layout button layout

当我阅读有关如何动态创建布局的教程时,我发现xml文件中的buttons被定义为view,如下所示,而不是我预期定义的为buttons。定义视图元素的方法是相同还是存在差异?

的xml:

<LinearLayout 
            android:id="@+id/linearLayout00"
            android:layout_height="wrap_content" 
            android:layout_width="match_parent"
            android:orientation="horizontal">
            <Button android:text="Add View" 
                android:id="@+id/addBtn00" 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".5" />
            <Button 
                android:text="Remove View" 
                android:layout_height="wrap_content"
                android:id="@+id/removeBtn00" 
                android:layout_width="0dp"
                android:layout_weight=".5" />
        </LinearLayout>

Java_Code:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    View buttonAdd = findViewById(R.id.add);
    buttonAdd.setOnClickListener(this);

    View buttonRemove = findViewById(R.id.remove);
    buttonRemove.setOnClickListener(this);

1 个答案:

答案 0 :(得分:0)

Button类是View的子类。多态允许我们使用子类代替父类但是,您只能访问View类中的方法,而不能访问Button类特有的任何方法。

这意味着您将无法调用setText()之类的方法(Button类继承自TextView,后者继承自View)

如果你想把它投射到按钮上,你应该写:

Button buttonAdd = (Button) findViewById(R.id.add);