Android Studio,AppCompatButton的子类不像按钮

时间:2018-01-05 03:18:56

标签: java android button android-appcompat

我正在使用java中的Android应用程序,并且我已经创建了一个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);

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

1 个答案:

答案 0 :(得分:0)

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

作为一般规则,您应该使用当时直接可用的上下文。在活动中,这意味着通过this使用自己的上下文。

有关详细信息,请参阅此经典帖子:https://stackoverflow.com/a/7298955/2259854