我第一次使用时没有生成点击事件的按钮有问题,但是如果我点击屏幕上的按钮而不是按钮然后点击它。它可以直接使用!
在我的片段onCreateView中我有:
viewAnimator = (ViewAnimator) inflater.inflate(R.layout.fragment_login_supplier, container, false);
initView(viewAnimator);
并在initView中:
private void initView(ViewAnimator ll) {
......
errorButton = (Button) errorLayout.findViewById(R.id.buttonError);
errorButton.setBackgroundResource(btnErrorSelector);
errorButton.setOnClickListener(FragmentLoginSupplier.this);
.....
}
我的片段实现了OnClickListener但我的:@Override public void onClick(View vue){} 第一次没有收到......
按钮ID:buttonError
在这里布局的开头:
<ScrollView
android:id="@+id/scrollViewForm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" >
<LinearLayout
android:id="@+id/login_form_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/RelativeLayoutErrorMessage"
android:layout_width="match_parent"
android:layout_height="@dimen/button_height"
android:background="@color/DarkGray"
android:visibility="gone" >
<ImageView
android:id="@+id/ImageViewErrorMessage"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:contentDescription="@string/todo"
android:src="@drawable/alert_white"
android:visibility="gone" />
<TextView
android:id="@+id/textViewErrorMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toLeftOf="@+id/buttonError"
android:layout_toRightOf="@+id/ImageViewErrorMessage"
android:text="@string/vous_n_avez_pas_encore_ajout_de_compte"
android:textColor="@color/white" />
<Button
android:id="@+id/buttonError"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:background="@drawable/button_suppression_noir_selector" />
</RelativeLayout>
<View
android:id="@+id/RelativeLayoutErrorMessageBottomBorder"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="#FFFFFFFF"
android:visibility="gone" />
答案 0 :(得分:14)
我不知道这是否能解决你的问题。但即使我点击按钮也有问题。这个代码对我有用。我认为在第一种情况下,第一次点击只需要关注。第二次点击是“真实”点击。
<style name="ButtonStyle" parent="@android:style/Widget.Holo.Button">
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:clickable">true</item>
<item name="android:background">@drawable/custom_button</item>
<item name="android:textColor">@color/somecolor</item>
<item name="android:gravity">center</item>
</style>
请尝试并告诉我。
您可以尝试的其他解决方案是添加abc.java
input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
v.performClick();
}
}
});
并在你的Xml中制作<item name="android:focusableInTouchMode">true</item>
。
如果有效,请告诉我
答案 1 :(得分:8)
只需设置errorButton:
errorButton.setFocusableInTouchMode(false);
或添加
errorButton.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event) {
if (MotionEvent.ACTION_UP == event.getAction())
{
view.performClick();
return true;
}
return false;
}
});
答案 2 :(得分:6)
我通过简单设置来解决这个问题:
<ImageButton
android:id="@+id/imageButtonFiltroNome"
...
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false" />
答案 3 :(得分:2)
你可能在第一次运行的地方有一个验证事件处理程序。查看选项卡序列中最后一个控件中的验证。你可能会在那里找到一些东西。
答案 4 :(得分:2)
如果您的控件位于可滚动容器内,请在容器上设置:
android:descendantFocusability="afterDescendants"
答案 5 :(得分:0)
我遇到了同样的问题,让我告诉你我是如何解决这个问题的。 我在表单中有xml。
<RelativeLayout
android:id="@+id/rlContactUs"
style="@style/SettingsItemContainer" >
<com.CustomTextView
android:id="@+id/tvContactUs"
style="@style/SettingsItem"
android:text="@string/contactUs"/>
</RelativeLayout>
SettingsItemContainer的风格如下。
<style name="SettingsItemContainer">
other things
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
</style>
现在相对布局即使在触摸时也没有收到第一次点击。所以我把它改成了:
<style name="SettingsItemContainer">
other things
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">false</item>
</style>
这解决了问题
答案 6 :(得分:0)
我也遭受了这样的问题。
就我而言,我在NestedScrollView
中有一个表单和一个按钮。
我可以按照此答案https://stackoverflow.com/a/47161693/3014036
基本上,您需要将此服装布局行为添加到AppBar https://gist.github.com/chrisbanes/8391b5adb9ee42180893300850ed02f2。