我看到一些有关此事的帖子,我理解了这个问题。但怎么能绕过它呢?我有ListView
项目可以展开,但一旦视图消失,它就无法再次显示,除非它有一个空闲空间。如何制作那个空间?
private void mySetOnItemListener() {
l.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
Log.d("onItemClick","called");
LinearLayout ll = (LinearLayout)view.findViewById(R.id.llOpenedField);
ll.setVisibility(View.VISIBLE);
}
});
}
我的viewLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:weightSum="5" >
<TextView
android:id="@+id/tv_name"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="4"
android:padding="7dp"
android:text="item"
android:textColor="@android:color/background_dark"
android:textSize="25dp" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llOpenedField"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/ibInformation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/info" />
</LinearLayout>
</LinearLayout>
LinearLayout
android:id="@+id/llOpenedField"
是我在开始时尝试制作gone
的内容。
我将gone
属性放在getView()
BaseAdapter
内。
答案 0 :(得分:3)
如果将构成元素的代码放入其onClickListener中,则无法访问它(如果它不占用任何屏幕空间,则无法单击它)。您应该在其下方放置一个最小高度的布局,当您的视图l消失时,新的布局shell将变为可见,并且它应该获得可见的onClickListener。这样,在您的View消失后,这个新布局将能够将其恢复。
答案 1 :(得分:1)
请检查这个答案。这个答案适合我。
TranslateAnimation translateAnimation = new TranslateAnimation(0, 50, 0, 0);
int animationTime = 200;
translateAnimation.setDuration(animationTime);
translateAnimation.setFillEnabled(true);
translateAnimation.setFillAfter(true);
yourView.startAnimation(translateAnimation);
yourView.setVisibility(View.VISIBLE);
答案 2 :(得分:-1)
尝试这个并根据您的需要进行修改,这不是我点击的列表项
制作线性布局android:visibility="gone"
;首先,这样做。
@Override
public void onClick(View v)
{
LinearLayout ll = (LinearLayout)findViewById(R.id.vis);
if(v == ex)
{
if(ll.getVisibility() == View.VISIBLE)
ll.setVisibility(View.GONE);
else
ll.setVisibility(View.VISIBLE);
}
更新: - 这些是适合你的行...这将使得适当的展开和折叠,并且没有可用的空间
if(ll.getVisibility() == View.VISIBLE)
ll.setVisibility(View.GONE);
else
ll.setVisibility(View.VISIBLE);