我正在用Java开发一个android应用程序,并且ive创建了android.support.v7.widget.AppCompatButton的子类,因为您不应该直接将Button子类化。当我创建子类对象(hencforth称为“ subButton”)并通过XML将其添加到活动中时,该项的外观和行为就像一个按钮,但是当我通过Java(以编程方式)这样做时,它的外观和行为就像一个按钮。改为使用textView。

我的XML是

  <com.example.appName.subButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="xmlTestItem"/>


虽然我的Java是

 subButton testItem = new subButton(getApplicationContext());
    testItem.setText("javaTestItem");
    testItem.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT ,ViewGroup.LayoutParams.MATCH_PARENT));
    mainListScroll.addView(testItem);


但它仍然只显示文本而不是按钮。有什么线索吗?

最佳答案

该问题很可能是由实例化subButton实例时使用应用程序上下文而不是活动上下文引起的。特别是,实例化视图组件时使用的与这些上下文关联的主题通常是不同的。

通常,您应该使用当时直接可用的上下文。在活动中,这意味着通过this利用其自身的上下文。

有关更多详细信息,请参见以下经典文章:https://stackoverflow.com/a/7298955/2259854

09-26 23:03