我知道关于这个问题的问题很少,但所有问题都在使用动画。我的活动中根本没有动画。我有一个TextView,默认情况下是可见的,并根据我在Splash屏幕中显示的功能标记设置为Gone。
这是我的xml文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/profile_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/profile_bg"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingTop="?android:actionBarSize">
<TextView
android:id="@+id/payments_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="6dp"
android:background="@drawable/profile_payment_bg"
android:clickable="true"
android:drawableLeft="@drawable/ic_profile_payment"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:onClick="onClick"
android:padding="8dp"
android:text="Payment"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@android:color/white" />
...
</LinearLayout>
</FrameLayout>
虽然我将Clickable和OnClickListener功能分别设置为false和null,但即使我的“付款”按钮不可见,也会调用OnClick()功能:(
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_profile);
this.mPayments = (TextView) findViewById(R.id.payments_btn);
// Check if payment functionality available for the Passenger
final PassengerFeatureResponse cachedFeature = FeatureResponse.fromJsonString(PreferenceUtils.getFeatureResponse(this));
if (cachedFeature == null || !cachedFeature.isMade())
{
this.mPayments.setVisibility(View.GONE);
this.mPayments.setClickable(false);
this.mPayments.setOnClickListener(null);
}
}
我甚至尝试从xml文件设置Gone的可见性,并将其设置为可见代码,但功能相同:(
这可能是因为我已经从xml文件中定义了onClick
功能,如果我从代码中设置了点击监听器,我的问题就会得到解决,但是,我正在寻找以这种方式修复问题。
任何建议都将不胜感激。感谢。
答案 0 :(得分:0)
在FrameLayout
上试试这个
this.frameMain= (FrameLayout) findViewById(R.id.profile_layout);
if (cachedFeature == null || !cachedFeature.isMade())
{
this.mPayments.setVisibility(View.GONE);
this.mPayments.setClickable(false);
this.mPayments.setOnClickListener(null);
this.frameMain.invalidate();
}
答案 1 :(得分:0)
在这些行之后:
this.mPayments.setVisibility(View.GONE);
this.mPayments.setClickable(false);
添加以下行:
this.mPayments.setFocusable(false);
this.mPayments.setFocusableInTouchMode(false);
** 编辑 **
忽略可聚焦的代码段并尝试禁用此视图:
this.mPayments.setEnabled(false);
您可以检查视图是否可以接收点击事件以确保所有内容都是礼仪:
this.mPayments.isClickable(); // Indicates whether this view reacts to click events or not.
如果上述内容显示为false,则不应对点击事件作出反应。
答案 2 :(得分:0)
使用onClick
模式时,必须在类中实现的方法上定义View
作为参数。
也许您可以将开关与视图的ID一起使用,然后检查payments_btn
是否仍然可见,只有在可见时才会触发您的操作。