setvisibility(view.visible)在setvisibility(view.gone)之后不起作用
Posted
技术标签:
【中文标题】setvisibility(view.visible)在setvisibility(view.gone)之后不起作用【英文标题】:setvisibility(view.visible) not working after setvisibility(view.gone) 【发布时间】:2013-04-17 22:32:37 【问题描述】:我看到了一些关于这个的帖子,我理解了这个问题。但是怎么能绕过去呢?我有 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);
);
我的视图布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="horizontal"
android:weightSum="5" >
<TextView
android:id="@+id/tv_name"
android:layout_
android:layout_
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_
android:layout_
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/ibInformation"
android:layout_
android:layout_
android:src="@drawable/info" />
</LinearLayout>
</LinearLayout>
LinearLayout
android:id="@+id/llOpenedField"
是我在开始时尝试制作的gone
。
我把 gone
属性放在 getView()
里面 BaseAdapter
。
【问题讨论】:
【参考方案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);
【讨论】:
此代码将在单击列表项后在隐藏和展开其他布局或视图时正常工作。 if(v == ex) 中的“ex”代表什么?【参考方案2】:如果您将使元素可见的代码放入其 onClickListener 中,它将无法访问(如果它不占用任何屏幕空间,您将无法单击它)。您应该在其下方放置一个最小高度的布局,当您的视图 l 消失时,新的布局外壳变得可见,并且它应该获得可见的 onClickListener。这样,在您的 View 消失后,这个新布局将能够将其恢复。
【讨论】:
【参考方案3】:请检查此答案。这个答案对我有用。
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);
【讨论】:
以上是关于setvisibility(view.visible)在setvisibility(view.gone)之后不起作用的主要内容,如果未能解决你的问题,请参考以下文章
setvisibility(view.visible)在setvisibility(view.gone)之后不起作用
Android:为什么setVisibility(View.GONE);或setVisibility(View.INVISIBLE);不工作