【发布时间】:2016-10-18 00:09:48
【问题描述】:
我在使用 ListView 时遇到问题。 基本上,我有这个隐藏的 ListView 显示在 TextView 点击上。 这工作正常。 当我单击 ListView 的一个项目时,我想显示另一个布局(包含一个 TextView 和一个 FloatingButton)。 问题是当我显示 LinearLayout 时,我无法再单击 ListItem。有什么建议吗?
这里有一些代码: Layout.xml
<ListView
android:id="@+id/meal_insertion_meals_portions_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/meal_insertion_location"
android:layout_above="@id/meal_insertion_add_container"/>
<LinearLayout
android:id="@id/meal_insertion_add_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="8dp">
<android.support.design.widget.FloatingActionButton
android:id="@+id/meal_insertion_add_meal_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:src="@drawable/ic_add"
android:tint="@android:color/white"
app:backgroundTint="@color/colorPrimary"/>
<TextView
android:id="@+id/meal_insertion_add_meal_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center_vertical|center_horizontal"
android:text="@string/diary.meal.insertion.aliment.add"
android:textColor="@color/colorPrimary"/>
</LinearLayout>
Fragment.java
mealSelector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (selectorList.getVisibility() == View.VISIBLE) {
selectorList.setVisibility(View.GONE);
mealLocation.setVisibility(View.VISIBLE);
} else {
selectorList.setVisibility(View.VISIBLE);
mealLocation.setVisibility(View.GONE);
}
}
});
selectorList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView t1 = (TextView) view.findViewById(android.R.id.text1);
mealSelector.setText(t1.getText());
selectorList.setVisibility(View.GONE);
mealLocation.setVisibility(View.VISIBLE);
addLayoutContainer.setVisibility(View.VISIBLE);
}
}
);
【问题讨论】:
-
"问题是当我显示LinearLayout时,我不能再点击ListItem了。" - 当你点击一个项目并显示
LinearLayout时,你不是隐藏ListView吗?selectorList.setVisibility(View.GONE);你说的是这个吗? -
如果我再次单击 TextView,我将再次显示 listView,我可能想要选择一些其他项目。问题是当 addLayoutContainer 可见时,项目不再可点击。
-
啊,好的。您确定有什么东西没有以某种方式覆盖您的
ListView并阻止点击吗? -
没错,从布局文件中可以看出,ListView设置在containerLayout之上
-
是的,好吧,
RelativeLayouts 的行为可能与预期相反。这是假设您实际上在RelativeLayout中获得了那些Views。你没有发布整个布局。无论如何,切换ListView的可见性不应影响其OnItemClickListener,因此除非您在未发布的代码中对其执行其他操作,否则我不得不猜测这与布局的行为。
标签: android android-layout listview floating-action-button