編輯:關於Android編程
Tab 標簽可以橫向滾動,標簽可選擇,並且在選擇的時候有標線下劃線。
可繼承HorizontalScrollView 實現,然後裡面標簽ITem可可以是TextView,下劃線可以在Draw方法中繪制出。
/**
* 向容器中添加標簽view
*
* @param position
* @param title
*/
private void add****(final int position, String title)
{
TextView tab = new TextView(getContext());
tab.setText(title);
tab.setGravity(Gravity.CENTER);
tab.setSingleLine();
if (position == currentPosition)
{
tab.setTextColor(mTabPressTextColor);
} else
{
tab.setTextColor(mTabTextColor);
}
tab.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTabTextSize);
tab.setBackgroundResource(tabBackgroundResId);
addTab(position, tab);
}
繪制下劃線
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
/** 繪制tab標簽下劃線 **/
View currentTab = tabsContainer.getChildAt(currentPosition);
if (currentTab != null)
{
float lineLeft = currentTab.getLeft();
canvas.drawRect(lineLeft - detalLeft,
mViewHeight - underlineHeight,
lineLeft + currentTab.getWidth() - detalRight, mViewHeight,
mLinePaint)`
}
}
實現Item選擇下劃線動畫
/**
* 模擬動畫滾動下劃線
*
* @param fromPosition
* @param toPosition
*/
private void *****(int fromPosition, int toPosition)
{
TextView lastTab = (TextView) tabsContainer.getChildAt(fromPosition);
lastTab.setTextColor(mTabTextColor);
TextView currentTab = (TextView) tabsContainer.getChildAt(toPosition);
currentTab.setTextColor(mTabPressTextColor);
currentPosition = toPosition;
float lineLeft = currentTab.getLeft();
float lineRight = currentTab.getRight();
detalLeft = lineLeft - lastTab.getLeft();
detalRight = lineRight - lastTab.getRight();
this.post(new Runnable()
{
@Override
public void run()
{
if (Math.abs(detalLeft) > minDetal
|| Math.abs(detalRight) > minDetal)
{
if (Math.abs(detalLeft) > minDetal)
{
detalLeft = detalLeft / minDetal;
}
if (Math.abs(detalRight) > minDetal)
{
detalRight = detalRight / minDetal;
}
invalidate();
TabHorizontalScrollView.this.post(this);
} else
{
invalidate();
}
}
});
}
綁定監聽
/**
* 標簽監聽事件
*/
private OnTabItemClickListener mOnTabItemClickListener;
/**
* 綁定標簽切換監聽事件
*
* @param listener
*/
public void setOnTabItemClickListener(OnTabItemClickListener listener)
{
mOnTabItemClickListener = listener;
}
/**
* 標簽監聽類
*
* @author jarlen
*
*/
public interface OnTabItemClickListener
{
public void onClickTabItem(float value);
}
在Item 的TextView的OnClick的方法中調用onClickTabItem()方法,然後在Activity中實現。
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBib3JkZXI9"0" src="http://wpa.qq.com/pa?p=2:791415371:41" />
之前講Android的View的繪制原理和流程的時候,講到過在Android調用setContentView之後,Android調用了一個prepreTravle的方法,
本文實例講述了android開發之listView組件用法。分享給大家供大家參考,具體如下:關於Android ListView組件中android:drawSelect
(本文講解了在Android中實現列表下拉刷新的動態效果的過程,文末附有源碼。)看完本文,您可以學到:1.下拉刷新的實現原理2.自定義Android控件,重寫其ListV
我們通過最常見的登陸案例進行介紹android-async-http開源項目中有關類的使用.希望對你學習android-async-http開源項目有所幫助. 1.在應用