CustomAdapterはBaseAdapterを拡張します。これはgetView()メソッドで、ViewHolderを使用します。そして、TextViewを使ってclickListenerを設定してビュー(A
と呼ぶ)を設定し、もう1つのビュー(B
と呼ぶ)を表示していますが、TextViewをクリックするとA
GONEは空白になりますので、B
は一致しません親。 setVisibility(View.Gone)は動作しますが、ビューはまだ空間を所有しています
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null){
convertView = mLayoutInflater.inflate(R.layout.customlayout,parent,false);
viewHolder = new ViewHolder();
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView = (TextView) convertView.findViewById(R.id.textview);
viewHoler.a = (LinearLayout) convertView.findViewById(R.id.a);
viewHoler.b = (LinearLayout) convertView.findViewById(R.id.b);
viewHolder.textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewHolder.a.getVisibility() == View.GONE){
viewHolder.b.setVisibility(View.GONE);
viewHolder.a.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}else {
viewHolder.a.setVisibility(View.GONE);
viewHolder.b.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
}
});
convertView.setTag(viewHolder);
return convertView;
}
customlayoutコードのように私のコードは、私はいつも、以下の別の方法のようにTextViewに
が、それをクリックしたときに
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/bg"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/a"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button a"/>
</LinearLayout>
<LinearLayout
android:id="@+id/b"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="visible">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button b"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
それは、この方法のようにショーのあるべきです、ちょうどA
のように、まだsetVisibility(View.INVISIBLE)
のように、そのようなスペースを取るビューsetVisibility(View.GONE)
A
ビューが表示されているもののB
ビューが消えてしまったが、それはまだ
スペースを取るされていないため、なぜそのように振る舞うだろうか?それを解決するにはどうすればよいですか? ありがとうございます。
私はそれを試してみるが、それは – PPTing
がスペースを取っているかどうか確認するために階層ビューアを参照してください動作しません。 – jaibatrik
http://developer.android.com/tools/help/hierarchy-viewer.html – jaibatrik