我正在尝试使LinearLayout可单击,并且此布局包含两个子视图:TextView和在TextView下形成下划线的视图。我尝试了很多解决方案但没有解决方案。
问题是可点击的LinearLayout仅在用户点击其填充时响应,而不是在用户点击子视图时响应。
当用户点击LinearLayout及其子视图的任何位置时,我希望整个线性布局传播一个按下状态。这是我的布局文件的相关部分(我已经尝试将子视图设置为可点击但是否定了可点击的整个区域):
...
<LinearLayout
android:id="@+id/routineday_page_set1_weight_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:orientation="vertical"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:id="@+id/routineday_page_set1_weight_textview"
style="@style/TextAppearance.AppCompat.Widget.Button.Borderless.Colored"
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/set_weight_text_selector"
android:textSize="16sp"
tools:text="260lbs"
android:textAlignment="center"
android:clickable="false"
android:duplicateParentState="true"/>
<View
android:id="@+id/routineday_page_set1_weight_underline"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@drawable/set_weight_underline"
android:clickable="false"
android:duplicateParentState="true"/>
</LinearLayout>
</LinearLayout>
...
非常感谢任何帮助。
编辑:我应该补充一下,整个区域当前设置为可点击,当用户点击LinearLayout的填充时,所有子视图都在响应。但是,当用户单击任何子元素时,没有单击响应。
答案 0 :(得分:0)
您可以尝试覆盖LinearLayout的 def colorCheck(src,source):
prevCount=0
counter=0;
ans=20
for i in range(len(src)):
counter=0
for s in range(len(source)):
if colorDifference(src[0][0],src[0][1],src[0][2],source[0,s,0],source[0,s,1], source[0,s,2])>2:
counter= counter+1
print("OKAY")
if ans== 20:
prevCount=counter
counter=0
ans=src[0,3]
elif counter>=prevCount:
prevCount=counter
counter=0
ans=src[0,3]
#print(colorDifference(src[0][0],src[0][1],src[0][2],source[0,s,0],source[0,s,1],source[0,s,2]))
return ans
方法。当touchEvent位于填充区域时,拦截事件。否则,将事件传播给子项。
有关Android触摸事件处理的更多信息,请阅读this article。