我想在列表视图中制作视图鳍状肢。所以我创建了一个带有视图鳍状肢的item_layout,它包含两个RelativeLayout; < @ + ID / item_layout_main_content>它显示文本两个图像和< @ + id / item_layout_buttons>它显示了5个按钮,用于发送文本,共享文本,转到详细信息等。除了一件事,一切正常。 一次后,我点击< @ + id / item_layout_main_content>该剂量没有任何按钮,但< @ + id / item_layout_buttons>上的其他按钮;打电话令人惊讶。我不知道为什么!!!
item_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewfliper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:inAnimation="@anim/slide_down"
android:outAnimation="@anim/slide_up" >
<RelativeLayout
android:id="@+id/item_layout_main_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="#eee" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="50dp"
android:text="" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/flower_border_right" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:src="@drawable/flower_border_left" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/item_layout_buttons"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:background="#eee" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<RelativeLayout
android:layout_width="50dp"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/iv_back"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@drawable/back" />
</RelativeLayout>
<RelativeLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp" >
<ImageView
android:id="@+id/iv_detail"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@drawable/detail" />
</RelativeLayout>
<RelativeLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp" >
<ImageView
android:id="@+id/iv_share"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_centerInParent="true"
android:focusable="true"
android:paddingLeft="0dp"
android:src="@drawable/share" />
</RelativeLayout>
<RelativeLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp" >
<ImageView
android:id="@+id/iv_sms"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:focusable="false"
android:src="@drawable/sms" />
</RelativeLayout>
<RelativeLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp" >
<ImageView
android:id="@+id/flavore"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:src="@drawable/heart_empty" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
</ViewFlipper>
slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="0.0"
android:pivotX="100%"
android:pivotY="50%"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<scale
android:duration="100"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="100%"
android:pivotY="50%"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="0.0" />
</set>
itemAdapter.java
private static class ViewHolder {
public Context context;
public Ideom ideom;
public TextView text;
public ImageView favorite;
public ImageView sms;
public ImageView share;
public ImageView detail;
public ImageView back;
public ViewFlipper flipper;
public void init() {
text.setText(ideom.getId()+"");
sms.setOnClickListener(new SendSMS());
share.setOnClickListener(new ShareText());
favorite.setOnClickListener(new ToggleFlavore());
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
flipper.showNext();
}
});
if (!ideom.getRate()) {
favorite.setImageResource(R.drawable.heart_empty);
} else {
favorite.setImageResource(R.drawable.heart_fill);
}
}
class SendSMS implements View.OnClickListener {
@Override
public void onClick(View view) {
Log.d("sms", "click");
if (flipper.getCurrentView().getId() == R.id.item_layout_buttons) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body", ideom.getContent());
intent.setType("vnd.android-dir/mms-sms");
context.startActivity(intent);
}
}
}
class ToggleFlavore implements View.OnClickListener {
@Override
public void onClick(View view) {
if (flipper.getCurrentView().getId() == R.id.item_layout_buttons) {
Boolean f=ideom.toggleFavorite();
if (f) {
favorite.setImageResource(R.drawable.heart_fill);
} else {
favorite.setImageResource(R.drawable.heart_empty);
}
}
}
}
class ShareText implements View.OnClickListener {
@Override
public void onClick(View view) {
if (flipper.getCurrentView().getId() == R.id.item_layout_buttons) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(android.content.Intent.EXTRA_TEXT,
ideom.getContent());
intent.setType("text/plain");
context.startActivity(intent);
}
}
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Ideom ideom = ideoms.get(position);
//if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_layout,null);
holder.context = context;
holder.text = (TextView) convertView.findViewById(R.id.textView1);
holder.favorite = (ImageView) convertView.findViewById(R.id.flavore);
holder.sms = (ImageView) convertView.findViewById(R.id.iv_sms);
holder.share = (ImageView) convertView.findViewById(R.id.iv_share);
holder.detail = (ImageView) convertView.findViewById(R.id.iv_detail);
holder.back = (ImageView) convertView.findViewById(R.id.iv_back);
holder.flipper = (ViewFlipper) convertView.findViewById(R.id.viewfliper);
//holder.flipper.setDisplayedChild(0);
convertView.setTag(holder);
//} else {
//holder = (ViewHolder) convertView.getTag();
//holder.flipper.setDisplayedChild(0);
//}
holder.ideom = ideom;
//holder.flipper = (ViewFlipper) convertView.findViewById(R.id.viewfliper);
holder.init();
return convertView;
}
MainActivity.java
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
ViewFlipper fliper = (ViewFlipper) v.findViewById(R.id.viewfliper);
if (fliper.getCurrentView().getId() == R.id.item_layout_main_content) {
fliper.showNext();
//super.onListItemClick(l, v, position, id);
}
}