[英]Radiobuttons becomes unclickable when used with viewpager in android
我正在使用viewpager和分段組來創建可滑動片段。 這些細分的組實際上是基於RadioGroup的。 我想要的是,在單擊這些段(實際上是單選按鈕)時,應該加載相應的頁面。 問題是這些單選按鈕不可單擊。 但是一旦我注釋掉這條線
viewPager.setAdapter(adapter)
這些單選按鈕變為可單擊。 我嘗試搜索解決方案,但無法解決。 另外,我也不想使用TabLayout,因為我希望此UI位於屏幕中間的某個位置。
這是代碼-
public class MainActivity extends AppCompatActivity implements
ViewPager.OnPageChangeListener {
SegmentedGroup segmentedGroup;
ViewPager viewPager;
MyViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
viewPager = (ViewPager) findViewById(R.id.pager);
adapter = new MyViewAdapter(getSupportFragmentManager());
segmentedGroup = (SegmentedGroup) findViewById(R.id.segmentedgroup);
viewPager.setAdapter(adapter);
segmentedGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rb1:
Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_SHORT).show();
viewPager.setCurrentItem(0);
break;
case R.id.rb2:
Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_SHORT).show();
viewPager.setCurrentItem(1);
break;
case R.id.rb3:
Toast.makeText(getApplicationContext(), "3", Toast.LENGTH_SHORT).show();
viewPager.setCurrentItem(2);
break;
}
}
});
viewPager.addOnPageChangeListener(this);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
segmentedGroup.check(segmentedGroup.getChildAt(0).getId());
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
segmentedGroup.check(R.id.rb1);
break;
case 1:
segmentedGroup.check(R.id.rb2);
break;
case 2:
segmentedGroup.check(R.id.rb3);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
class MyViewAdapter extends FragmentPagerAdapter {
public MyViewAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position)
{
case 0: return new FragmentOne();
case 1: return new FragmentTwo();
case 2: return new FragmentThree();
}
return null;
}
@Override
public int getCount() {
return 3;
}
}
}
這是XML-
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<LinearLayout
android:id="@+id/someView"
android:layout_width="wrap_content"
android:layout_height="105px"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/someView"
android:gravity="center_horizontal">
<info.hoang8f.android.segmented.SegmentedGroup xmlns:segmented="http://schemas.android.com/apk/res-auto"
android:id="@+id/segmentedgroup"
android:layout_width="match_parent"
android:layout_height="105px"
android:orientation="horizontal"
segmented:sc_border_width="1dp"
segmented:sc_corner_radius="10dp"
segmented:sc_tint_color="#36578B">
<RadioButton
android:id="@+id/rb1"
style="@style/RadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ONE" />
<RadioButton
android:id="@+id/rb2"
style="@style/RadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TWO" />
<RadioButton
android:id="@+id/rb3"
style="@style/RadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="THREE" />
</info.hoang8f.android.segmented.SegmentedGroup>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</RelativeLayout>
我是初學者,我們將為您提供任何幫助。
我在玩弄android布局后弄清楚了答案。 在android studio布局編輯器中,viewpager占據了整個屏幕。 在viewpager中添加android:layout_below參數后,它就可以工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.