首先:布局
<HorizontalScrollView
android:id="@+id/hscrollview"
android:layout_width="fill_parent"
android:layout_height="35dp"
android:layout_marginTop="-3dp"
android:background="@drawable/bg_classify"
android:scrollbars="none" >
<RadioGroup
android:id="@+id/pic_title_bar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/pic_socity"
style="@style/HomeDefaultRadioButton"
android:checked="true"
android:tag="0"
android:text="社会图片" />
<RadioButton
android:id="@+id/pic_view"
style="@style/HomeDefaultRadioButton"
android:tag="1"
android:text="新城景观" />
<RadioButton
android:id="@+id/pic_hy"
style="@style/HomeDefaultRadioButton"
android:tag="2"
android:text="行业图片" />
<RadioButton
android:id="@+id/pic_xc"
style="@style/HomeDefaultRadioButton"
android:tag="3"
android:text="乡村发现" />
<RadioButton
android:id="@+id/pic_zy"
style="@style/HomeDefaultRadioButton"
android:tag="4"
android:text="自然风光" />
<RadioButton
android:id="@+id/pic_rw"
style="@style/HomeDefaultRadioButton"
android:tag="5"
android:text="人文艺术" />
<RadioButton
android:id="@+id/pic_ly"
style="@style/HomeDefaultRadioButton"
android:tag="6"
android:text="旅游图片" />
</RadioGroup>
</HorizontalScrollView>
style:
<style name="HomeDefaultRadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
<item name="android:layout_width">80dp</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:layout_gravity">center_vertical|center_horizontal</item>
<item name="android:button">@null</item>
<item name="android:singleLine">true</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
<item name="android:paddingTop">5dip</item>
<item name="android:paddingBottom">5dip</item>
<item name="android:textSize">14sp</item>
<item name="android:background">@drawable/home_top_menu</item>
<item name="android:textColor">@color/category_item_title_selector</item>
</style>
java代码
//初始化控件
void initView(){
horizontalScrollView = (HorizontalScrollView)view.findViewById(R.id.hscrollview);
mPicRadioGroup = (RadioGroup)view.findViewById(R.id.pic_title_bar);
}
void initListener(){
//Display d = .getWindowManager().getDefaultDisplay();
//DisplayMetrics dm = new DisplayMetrics();
//d.getMetrics(dm);
//final int screenHalf = d.getWidth() / 2;// 屏幕宽度的一半
DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
final int screenHalf = dm.widthPixels / 2;
for (int i = 0; i < mPicRadioGroup.getChildCount(); i++) {
final View v = mPicRadioGroup.getChildAt(i);
if (v instanceof RadioButton) {
((RadioButton) v).setOnCheckedChangeListener(new OnCheckedChangeListener() {
@SuppressLint("ResourceAsColor")
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int page = Integer.parseInt(buttonView.getTag().toString());
if (isChecked) {
int scrollX = horizontalScrollView.getScrollX();
System.out.println("scrollX----->" + scrollX);
int left = v.getLeft();
int leftScreen = left - scrollX;
horizontalScrollView.smoothScrollBy((leftScreen - screenHalf), 0);
}
}
});
}
}
}
注意获取屏幕的大小:
方式1:通过Activity:
Display d = this.getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
d.getMetrics(dm);
final int screenHalf = d.getWidth() / 2;// 屏幕宽度的一半
方式2:通过传入上下文Context:
DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
final int screenHalf = dm.widthPixels / 2;
图片: