- 浏览: 5825336 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
快速迭代用
布局
RadioButton --->rb_for_orders.xml
RadioButton -->背景bg_radio_forum.xml
RadioButton -->下划线line_bottom_with_blue_bold_for_forum.xml
SmartTabLayout
http://www.jcodecraeer.com/a/opensource/2015/0331/2674.html
http://blog.csdn.net/lmj623565791/article/details/42160391
Android TabLayout 库:FlycoTabLayout
http://www.open-open.com/lib/view/open1447294190257.html
import java.util.ArrayList; import org.json.JSONObject; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.HorizontalScrollView; import android.widget.RadioButton; import android.widget.RadioGroup; import com.android.volley.Response.Listener; import com.yirui.youbao.App; import com.yirui.youbao.fragment.OrderListFragment; import com.yirui.youbao.model.KeyValue; import com.yirui.youbao.net.Commands; /** * 订单管理 * @author pythoner * */ public class OrdersActivity extends BaseActivity implements View.OnClickListener { private Context context; private HorizontalScrollView hScrollView; private RadioGroup radioGroup; private ArrayList<KeyValue> tabs = new ArrayList<KeyValue>(); private ViewPager viewPager; private FragmentPagerAdapter pagerAdapter; private Fragment[] fragments; private int curPosition=0; private KeyValue curKeyValue=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_orders); context = this; initActionBar("", App.res.getDrawable(R.drawable.back), "订单管理", "创建订单",null); initViews(); } @Override public void doRightButtonClick(View v) { Commands.doCommandOrderCreate(context, App.user,null,new Listener<JSONObject>() { @Override public void onResponse(JSONObject response){ // TODO Auto-generated method stub // Log.i("tag", response.toString()); if (isSuccess(response)) { showToast("创建订单成功"); } } }); } private void initViews() { //1:未确认;2:待支付;3:已支付;4:已使用;5;用户退订;6:停车场退订;7:退款中;8;已退款 tabs.add(new KeyValue("1","待确认")); tabs.add(new KeyValue("2","待支付")); tabs.add(new KeyValue("3","已支付")); tabs.add(new KeyValue("4","已使用")); tabs.add(new KeyValue("5","用户退订")); tabs.add(new KeyValue("6","停车场退订")); tabs.add(new KeyValue("7","退款中")); tabs.add(new KeyValue("8","已退款")); initIndicator(); initViewPager(); } private void initIndicator(){ hScrollView = (HorizontalScrollView) findViewById(R.id.hScrollView); radioGroup = (RadioGroup) findViewById(R.id.radioGroup); for (int i = 0; i < tabs.size(); i++){ KeyValue tag = tabs.get(i); RadioButton child = (RadioButton) LayoutInflater.from(context).inflate(R.layout.rb_for_orders, null); child.setId(i); child.setTag(tag); child.setText(tag.getSecond()); child.setBackgroundResource(R.drawable.bg_radio_forum); child.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ // TODO Auto-generated method stub int id = v.getId(); viewPager.setCurrentItem(id); curPosition=id; curKeyValue = (KeyValue) v.getTag(); } }); if(i==curPosition){ child.setChecked(true); } radioGroup.addView(child); } } private void initViewPager(){ fragments = new Fragment[tabs.size()]; for(int i=0;i<tabs.size();i++){ fragments[i] = OrderListFragment.newInstance(tabs.get(i)); } pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public int getCount() { return fragments.length; } @Override public Fragment getItem(int position) { return fragments[position]; } }; viewPager = (ViewPager) findViewById(R.id.viewPager); viewPager.setOffscreenPageLimit(8); viewPager.setAdapter(pagerAdapter); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){ @Override public void onPageSelected(int position){ // TODO Auto-generated method stub radioGroup.check(position); smoothScrollTo(position); curPosition=position; curKeyValue = tabs.get(position); } @Override public void onPageScrolled(int arg0, float arg1, int arg2){ // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0){ // TODO Auto-generated method stub } }); viewPager.setCurrentItem(curPosition); } @Override public void onClick(View v) { // TODO Auto-generated method stub } private void smoothScrollTo(final int position){ final int w = radioGroup.getWidth() / radioGroup.getChildCount(); new Handler().postDelayed((new Runnable(){ @Override public void run(){ hScrollView.smoothScrollTo(((RadioButton) radioGroup.getChildAt(position)).getLeft() - w, 0); } }), 5); } }
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/bg_gray" android:orientation="vertical" > <include layout="@layout/actionbar_comm" /> <HorizontalScrollView android:id="@+id/hScrollView" android:layout_width="match_parent" android:layout_height="48dp" android:background="@android:color/white" android:cacheColorHint="@android:color/transparent" android:fadingEdge="none" android:fadingEdgeLength="0dp" android:gravity="center_vertical" android:overScrollMode="never" android:scrollbars="none" > <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal" > </RadioGroup> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="16dp" android:background="@android:color/white" android:flipInterval="30" android:persistentDrawingCache="animation" /> </LinearLayout>
RadioButton --->rb_for_orders.xml
<?xml version="1.0" encoding="utf-8"?> <RadioButton xmlns:android="http://schemas.android.com/apk/res/android" style="@style/radio" android:layout_height="match_parent" android:paddingTop="8dp" android:paddingBottom="8dp" android:paddingLeft="8dp" android:paddingRight="8dp" android:textColor="@color/radio_textcolor_with_blue" />
RadioButton -->背景bg_radio_forum.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/line_bottom_with_blue_bold_for_forum" /> <item android:state_checked="false"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="0dp" android:color="@android:color/transparent" /> <corners android:radius="0dp" /> </shape> </item> </selector>
RadioButton -->下划线line_bottom_with_blue_bold_for_forum.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:right="-3dp" android:left="-3dp" android:top="-3dp"> <shape> <stroke android:width="2dp" android:color="@color/primary" /> <solid android:color="@android:color/transparent"/> </shape> </item> </layer-list>
SmartTabLayout
http://www.jcodecraeer.com/a/opensource/2015/0331/2674.html
http://blog.csdn.net/lmj623565791/article/details/42160391
Android TabLayout 库:FlycoTabLayout
http://www.open-open.com/lib/view/open1447294190257.html
发表评论
-
工具类之FragmentUtils
2017-04-01 11:37 1732fragment应该是广大Android开发者都用到过的一个v ... -
左中右结构的行布局
2016-12-19 21:35 1185最近项目要开发一个新版本,发现项目中许多布局大致都相同改动不大 ... -
RecyclerView:带header&footer&加载更多
2015-09-09 16:24 2969接上一篇 由简到繁,循序渐进 实现了: 0,点击&长按 ... -
RecyclerView:带header和footer的grid
2015-09-09 13:47 3047知道原理后,为RecyclerView实现同时带header和 ... -
RecyclerView:带header的grid
2015-09-09 13:01 2432RecyclerView是一个高度可定制性的View 本文将使 ... -
iconify使用文本替换icon测试
2015-08-28 17:12 1694源项目地址 https://github.com/JoanZa ... -
快速上传头像到服务端工具类FaceUtil
2015-07-12 14:22 3081快速迭代用 import java.io.DataOut ... -
LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
2015-07-12 13:07 4157一切为了快速迭代 import java.util. ... -
RadioButton+ViewPager+FragmentPagerAdapter快速搭建页面结构
2015-07-12 11:08 2565一切为了快速开发 开发类似界面 import and ... -
为ViewPager设置CirclePageIndicator(小圆点)
2015-07-03 16:54 15335一切为了快速迭代! import android.con ... -
简单实现可以多选的ProductListDialog<T>
2015-06-25 22:33 1259只是一个范例,是为了代码快速迭代而写的 使用了listView ... -
基于上一篇写的SimplePairListPopupWindow<F,S>
2015-06-19 11:15 1538这次使用Pair<F,S>实现一个简单的Simpl ... -
基于上一篇实现的SimpleListPopupWindow<T>
2015-06-19 11:11 1520这次是个简单的PopupWindow,快速迭代用。 imp ... -
实现一个快速简单的SimpleListDialog<T>
2015-06-19 10:59 1749我写这样的文章都是为了快速迭代,所以都写的比较简单,谅解 此 ... -
为ViewPager设置SimpleViewPagerIndicator
2015-02-14 13:45 4728说到ViewPagerIndicator,网上有很多专门的开源 ... -
一个典型的从下部弹上来的Dialog
2014-12-05 14:47 6077典型的看图 import android.app ...
相关推荐
在Android开发中,有时我们需要实现一个可滑动切换的页面组件,这通常涉及到HorizontalScrollView、RadioGroup、Fragment以及ViewPager等控件。标题提到的“自定义HorizontalScrollView模仿RadioGroup+Fragment+...
这个"自定义HorizontalScrollView模仿RadioGroup+Fragment+ViewPager的翻页与点击效果"项目正是为了满足这样的需求。HorizontalScrollView是Android原生控件,用于在水平方向上滚动视图,而RadioGroup则可以实现单选...
1、首先让导航栏横向滑动:HorizontalScrollView中放RadioGroup,RadioGroup中放RadioButton。 2、底部为ViewPager。 3、通过设置ViewPager的页面改变来设置RadioButton的模拟点击事件。 4、监听RadioButton点击,来...
本篇将详细介绍如何利用HorizontalScrollView、RadioGroup以及ViewPager这三种组件来实现这样一个功能丰富的头部滑动导航菜单。 首先,`HorizontalScrollView`是Android提供的一个水平滚动视图,它可以容纳一个或多...
总结,实现“android菜单滑动”需要结合RadioGroup、HorizontalScrollView或ViewPager等组件,通过监听滑动事件、添加滑动动画以及处理逻辑来实现。如果需要更高级的交互体验,可以考虑使用ViewPager和Fragment。在...
- `HorizontalScrollView`内部包含`RadioGroup`,用于存放所有的`RadioButton`,代表各个Tab选项。 - `ViewPager`用于显示对应的`Fragment`内容。 示例布局代码如下: ```xml android:layout_width="match_...
import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v7.app....
在`ViewPager`中,我们可以设置适配器(如`FragmentPagerAdapter`或`FragmentStatePagerAdapter`)来管理各个页面的创建和销毁。`ViewPager`的`OnPageChangeListener`接口可以监听页面的滑动事件,当页面改变时,...
1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、...
1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、...
NestedScrollView是支持嵌套滚动的布局,它允许在单个视图内包含其他可滚动的视图,如ScrollView或HorizontalScrollView,特别适合在内容较多且需要滚动的场景。 10. **BottomNavigationView(底部导航栏)** ...
3. **选择器控件**:Spinner(下拉列表)、RadioGroup(单选按钮组)、CheckBox(复选框)等,用于实现用户的多选项选择。 4. **滑动控件**:ScrollView(滚动视图)、HorizontalScrollView(水平滚动视图),可使...
可以使用`ViewPager`或者`HorizontalScrollView`来滑动浏览题目,每道题是一个独立的`Fragment`。 - 答题界面:每个题目下方有选项,用户可以点击选择答案,可以使用`RadioGroup`或`CheckBox`来实现多选或单选功能...
7. **ZJ_HorizontalScrollView**:HorizontalScrollView是一个可以水平滚动的视图容器,可以容纳多个子视图。在导航菜单中,它通常用于创建横向滑动的选项卡布局,用户可以左右滑动查看不同内容。 8. **TabDemo**:...
26. HorizontalScrollView(水平滚动视图):同ScrollView,但支持水平方向的滚动。 27. ArrayAdapter(适配器):连接数据源和UI控件,如ListView或Spinner,用于数据绑定。 28. CursorAdapter(游标适配器):专门...