我正在使用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);
但它仍然只显示文本而不是按钮。有线索吗?
答案 0 :(得分:0)
问题很可能是由于在实例化subButton
实例时使用应用程序上下文而不是活动上下文。特别是,在实例化视图组件时使用的与这些上下文关联的主题通常是不同的。
作为一般规则,您应该使用当时直接可用的上下文。在活动中,这意味着通过this
使用自己的上下文。
有关详细信息,请参阅此经典帖子:https://stackoverflow.com/a/7298955/2259854