I need to use IPhone like segmented control in Android. Is there a default control for the same? What might be the best and efficient way to do so?
I have achieved it using build in Views.
MySegmentActivity
public class SegmentActivity extends AppCompatActivity implements View.OnClickListener { private Context mContext; private List buttonList = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.item_segment_layout); mContext = SegmentActivity.this; initSegmentButtons(); } private void initSegmentButtons() { buttonList = new ArrayList<>(); Button dayBtn = (Button) findViewById(R.id.btn_day); Button weekBtn = (Button) findViewById(R.id.btn_week); Button monthBtn = (Button) findViewById(R.id.btn_month); dayBtn.setOnClickListener(this); weekBtn.setOnClickListener(this); monthBtn.setOnClickListener(this); buttonList.add(dayBtn); buttonList.add(weekBtn); buttonList.add(monthBtn); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_day: buttonList.get(0).setBackgroundResource(R.drawable.btn_bg_orange_selected); buttonList.get(1).setBackgroundResource(R.drawable.btn_bg_orange); buttonList.get(2).setBackgroundResource(R.drawable.btn_bg_orange); break; case R.id.btn_week: buttonList.get(0).setBackgroundResource(R.drawable.btn_bg_orange); buttonList.get(1).setBackgroundResource(R.drawable.btn_bg_orange_selected); buttonList.get(2).setBackgroundResource(R.drawable.btn_bg_orange); break; case R.id.btn_month: buttonList.get(0).setBackgroundResource(R.drawable.btn_bg_orange); buttonList.get(1).setBackgroundResource(R.drawable.btn_bg_orange); buttonList.get(2).setBackgroundResource(R.drawable.btn_bg_orange_selected); break; default: break; } } }
layout.
btn_bg_orange.xml
btn_bg_orange_selected