アプリには、必要なほど最適化されていないと感じる行が多数あります。特定のデバイスでは、listView のスクロールが途切れます。相対レイアウトと同じ効果で遊んだことがあります。最大の犯罪者のコードの下に投稿しています。
各行は非常に複雑なレイアウトであり、カスタムTypefaces
も使用されていることに注意してください。( ) コード を投稿XML
しています:adapter
getView()
誰かがこれを見て、私が悪い慣行を行っているかどうかを教えてもらえますか? (私はレイアウトを入れ子にしないようにしていますが、入れ子にしなければならない場合もあります!)
これがあなたが視覚的に見ているものです。私が望むようになりました。スムーズスクローラーではありません:
XML は次のとおりです。
<?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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="4dp"
android:background="@drawable/following_home_selector"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/rlCommentButtonBar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@drawable/following_header_selector"
android:orientation="horizontal" >
<ImageView
android:id="@+id/labelFeaturedProfilePic"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="12dp"
android:layout_marginRight="10dp"
android:background="#bbb"
android:contentDescription="Profile"
android:src="@drawable/usericon" />
<LinearLayout
android:layout_width="1px"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/llFollowingCommentButton"
android:background="#bbb" >
</LinearLayout>
<LinearLayout
android:id="@+id/llFollowingCommentButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/review_button_selector"
android:orientation="vertical" >
<TextView
android:id="@+id/tvFollowingCommentLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="3dp"
android:text="comment"
android:textColor="#888" />
<TextView
android:id="@+id/tvFollowingCommentTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="-2dp"
android:background="@drawable/ic_comment_gray"
android:gravity="center_horizontal"
android:padding="1dp"
android:text="8"
android:textColor="#fff"
android:textSize="12sp"
android:textStyle="italic" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/labelFeaturedProfilePic"
android:orientation="vertical" >
<TextView
android:id="@+id/myMastCat_Username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Username"
android:textColor="#222"
android:textSize="20sp" />
<TextView
android:id="@+id/myMastCat_Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date"
android:textColor="#999"
android:textSize="12sp"
android:textStyle="italic" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/following_inner_box_selector"
android:orientation="vertical"
android:padding="7dp" >
<LinearLayout
android:id="@+id/llWatchItemCommentButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/myMasterCat_Item"
style="@style/DropShadowEffect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_marginTop="3dp"
android:layout_weight="90"
android:shadowColor="#ffffff"
android:text="Item"
android:textColor="#666"
android:textSize="24sp" />
</LinearLayout>
<TextView
android:id="@+id/myMastCat_Cat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="3dp"
android:layout_marginTop="-3dp"
android:gravity="top"
android:text="MasterCat"
android:textColor="#666"
android:textSize="14sp" />
<TextView
android:id="@+id/myMasterCat_Review"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="This is an item review."
android:textColor="#666"
android:textSize="17sp" />
</LinearLayout>
</LinearLayout>
レイヤー/オーバードローに関する限り:
私のテーマの背景は #d8d9d9 hex です。(表示されていない) を含むレイアウト ファイルにはlistView
背景がありません。
そして、これが私のListView(サードパーティライブラリ)です
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_to_refresh_scrollview_feat"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:listSelector="#00000000" />
を使用し00000000
て、何らかの理由で暗い灰色の背景でのみプレス状態に表示されるデフォルトの青い背景を削除する必要がありました。
表示されるプロファイル イメージは、LazyList
ライブラリを使用して読み込まれます。
また、3 つの異なる Roboto を使用していることに注意してくださいTypeface
。そして、1 つを除くすべての textView がカスタムを使用していますTypeFace
。
最後に、ここに私getView()
のものがありadapter
ます:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.master_cat_following, null,
true);
holder = new ViewHolder();
holder.i1 = (ImageView) convertView
.findViewById(R.id.labelFeaturedProfilePic);
holder.tv1 = (TextView) convertView
.findViewById(R.id.myMastCat_Cat);
holder.tv2 = (TextView) convertView
.findViewById(R.id.myMasterCat_Item);
holder.tv3 = (TextView) convertView
.findViewById(R.id.myMastCat_Username);
holder.tv3.setTypeface(roboto_regular);
holder.tv4 = (TextView) convertView
.findViewById(R.id.myMasterCat_Review);
holder.tv6 = (TextView) convertView
.findViewById(R.id.myMastCat_Date);
holder.tv7 = (TextView) convertView
.findViewById(R.id.tvFollowingCommentTotal);
holder.tv4.setTypeface(roboto_light);
holder.tv8 = (TextView) convertView
.findViewById(R.id.tvFollowingCommentLabel);
holder.tv8.setTypeface(roboto_thin);
holder.l1 = (LinearLayout) convertView
.findViewById(R.id.llFollowingCommentButton);
holder.r1 = (RelativeLayout) convertView
.findViewById(R.id.rlCommentButtonBar);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final FollowingItems mco = getItem(position);
final String item = mco.getItem();
String cat = mco.getCat();
final String user = mco.getUser();
String date = mco.getDate();
date = DateConvert.dateConvert(Long.valueOf(date));
long commentTotal = mco.getCommentCounts();
String review = mco.getReview();
String url = mco.getUrl();
holder.tv1.setTypeface(roboto_light);
holder.tv2.setTypeface(bpReplay);
holder.tv1.setText(cat);
holder.tv2.setText(item);
holder.tv3.setText(user);
holder.tv4.setText(review);
holder.tv6.setText(date);
Drawable dBlue = (Drawable) getContext().getResources().getDrawable(
R.drawable.ic_comment_blue);
Drawable dGray = (Drawable) getContext().getResources().getDrawable(
R.drawable.ic_comment_gray);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
if (commentTotal == 0) {
holder.tv7.setBackgroundDrawable(dGray);
} else {
holder.tv7.setBackgroundDrawable(dBlue);
}
} else {
if (commentTotal == 0) {
holder.tv7.setBackground(dGray);
} else {
holder.tv7.setBackground(dBlue);
}
}
holder.tv7.setText(String.valueOf(commentTotal));
if (!url.equals("http://www.rate-it-web.com/profile_pics/null")) {
imageLoader.DisplayImage(url, holder.i1);
} else {
holder.i1.setImageResource(R.drawable.usericon);
}
holder.l1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
FollowingItems mco = getItem(position);
Intent intent = new Intent(getContext(), CommentActivity.class);
// edited out
intent.putExtra("userRated", String.valueOf(mco.getUserRated()));
getContext().startActivity(intent);
}
});
holder.r1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
FollowingItems mco = getItem(position);
Intent i = new Intent(getContext(), ProfileActivity.class);
i.putExtra("userprofile", mco.getUser());
i.putExtra("userIdprofile", String.valueOf(mco.getUserId()));
getContext().startActivity(i);
}
});
return convertView;
}