1
私はグループと子供を含む拡張可能なリストを持っています。それぞれの子は、イメージ、テキスト、および別のイメージを保持するTableRowクラスです。その幅は、子行の前後のオフセットにつながるグループ幅よりも小さい。 問題は、子に触れるときに、オフセット領域が選択され、実際の子領域が元のままであることです。子エリアのみが選択されているときは逆の効果が必要です。Androidで展開可能な子の選択問題
私はグループと子供を含む拡張可能なリストを持っています。それぞれの子は、イメージ、テキスト、および別のイメージを保持するTableRowクラスです。その幅は、子行の前後のオフセットにつながるグループ幅よりも小さい。 問題は、子に触れるときに、オフセット領域が選択され、実際の子領域が元のままであることです。子エリアのみが選択されているときは逆の効果が必要です。Androidで展開可能な子の選択問題
解決策を見つけました。
無効isChildSelectable:
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild,
View convertView, ViewGroup parent)
{
parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
View childView = getMyView();
childView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
view.setBackgroundColor(Color.BLUE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
if (event.getAction() == MotionEvent.ACTION_CANCEL)
{
view.setBackgroundColor(Color.WHITE);
return true;
}
return false;
}
});
LinearLayout newView = new LinearLayout(context);
newView.setPadding(15, 0, 15, 0);
newView.addView(childView);
return newView;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}