Created
January 19, 2015 02:09
-
-
Save Viyu/3af499b51318128d1aab to your computer and use it in GitHub Desktop.
Grid item view holder for GirdView which show the border lines properly.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<View | |
android:id="@+id/line_top" | |
android:layout_width="match_parent" | |
android:layout_height="@dimen/grid_item_line" | |
android:layout_alignParentTop="true" | |
android:background="@color/line_color" /> | |
<View | |
android:id="@+id/line_bottom" | |
android:layout_width="match_parent" | |
android:layout_height="@dimen/grid_item_line" | |
android:layout_alignParentBottom="true" | |
android:background="@color/line_color" /> | |
<View | |
android:id="@+id/line_left" | |
android:layout_width="@dimen/grid_item_line" | |
android:layout_height="@dimen/home_grid_item_height" | |
android:layout_alignParentLeft="true" | |
android:background="@color/line_color" /> | |
<View | |
android:id="@+id/line_right" | |
android:layout_width="@dimen/grid_item_line" | |
android:layout_height="@dimen/home_grid_item_height" | |
android:layout_alignParentRight="true" | |
android:background="@color/line_color" /> | |
<FrameLayout | |
android:id="@+id/content_layout" | |
android:layout_width="match_parent" | |
android:layout_height="@dimen/home_grid_item_height" | |
android:layout_centerInParent="true" > | |
</FrameLayout> | |
</RelativeLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class GridItemView { | |
private View mView = null; | |
private FrameLayout mContentLayout = null; | |
private View mTopLine = null; | |
private View mBottomLine = null; | |
private View mLeftLine = null; | |
private View mRightLine = null; | |
public GridItemView(LayoutInflater inflater, int contentLayoutResId) { | |
mView = inflater.inflate(R.layout.framework_view_griditem, null); | |
mView.setTag(this); | |
// | |
mContentLayout = (FrameLayout) mView.findViewById(R.id.content_layout); | |
mContentLayout.addView(inflater.inflate(contentLayoutResId, null)); | |
// | |
mTopLine = (View) mView.findViewById(R.id.line_top); | |
mBottomLine = (View) mView.findViewById(R.id.line_bottom); | |
mLeftLine = (View) mView.findViewById(R.id.line_left); | |
mRightLine = (View) mView.findViewById(R.id.line_right); | |
} | |
public void setLineVisible(int totalCount, int columnCount, int position) { | |
// 只有一个item | |
if (totalCount < 2) { | |
mTopLine.setVisibility(View.VISIBLE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
mLeftLine.setVisibility(View.VISIBLE); | |
mRightLine.setVisibility(View.VISIBLE); | |
return; | |
} | |
// 只有一行 | |
if (totalCount == columnCount) { | |
mTopLine.setVisibility(View.VISIBLE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
mRightLine.setVisibility(View.VISIBLE); | |
if (position == 0) {// 第一个 | |
mLeftLine.setVisibility(View.VISIBLE); | |
} else {// 后面的 | |
mLeftLine.setVisibility(View.GONE); | |
} | |
return; | |
} | |
// 只有一列 | |
if (columnCount < 2) { | |
mLeftLine.setVisibility(View.VISIBLE); | |
mRightLine.setVisibility(View.VISIBLE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
if (position == 0) {// 第一个 | |
mTopLine.setVisibility(View.VISIBLE); | |
} else {// 后面的 | |
mTopLine.setVisibility(View.GONE); | |
} | |
return; | |
} | |
// 至少两行两列 | |
if (position == 0) {// 0, 0 | |
mLeftLine.setVisibility(View.VISIBLE); | |
mRightLine.setVisibility(View.VISIBLE); | |
mTopLine.setVisibility(View.VISIBLE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
} else if (position / columnCount == 0) {// 第一行 | |
mLeftLine.setVisibility(View.GONE); | |
mRightLine.setVisibility(View.VISIBLE); | |
mTopLine.setVisibility(View.VISIBLE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
} else if(position % columnCount == 0) {//第一列 | |
mLeftLine.setVisibility(View.VISIBLE); | |
mRightLine.setVisibility(View.VISIBLE); | |
mTopLine.setVisibility(View.GONE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
} else {//其他的 | |
mLeftLine.setVisibility(View.GONE); | |
mRightLine.setVisibility(View.VISIBLE); | |
mTopLine.setVisibility(View.GONE); | |
mBottomLine.setVisibility(View.VISIBLE); | |
} | |
} | |
public View findViewOfContentById(int id) { | |
return mContentLayout.findViewById(id); | |
} | |
public View getView() { | |
return mView; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment