如何在viewpager中修改视图?

时间:2018-10-23 06:25:02

标签: java android

我正在使用android viewpager作为滑动选择视图。按下按钮时,它会从viewpager中获得选定的项目。

在寻呼机适配器的instantiateItem(ViewGroup container, int position)方法中,它会像以下所示那样为 layout_child.xml 充气。

layout_child.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:gravity="center"
              android:padding="30dp"
              android:orientation="vertical">

    <Button xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/logo_btn"
               android:layout_width="wrap_content"
               android:layout_height="80dp"
               android:gravity="center"
               android:background="@drawable/logo_dialog_selector"
               android:orientation="vertical"/>

</LinearLayout>

MyPagerAdapter.java

@Override
public Object instantiateItem(ViewGroup container, int position) {

    LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(container.getContext()).inflate(R.layout.layout_child, null);
    linearLayout.setTag (R.id.logo_btn, linearLayout.findViewById (R.id.logo_btn));
    container.addView(linearLayout);
    return linearLayout;
}

我需要通过禁用按钮来更改背景的可绘制性。

我正在尝试在展开视图中禁用该按钮,以便它将使用选择器中的另一个可绘制对象。 我的问题是我无法访问PageTransformer.transformPage方法上的按钮。它将始终返回空值。

public void transformPage(View view, float position) {
    float rotation = (position < 0.0F ? 30.0F : -30.0F) * Math.abs(position);
    view.setTranslationX(getOffsetXForRotation(rotation, view.getWidth(), view.getHeight()));
    view.setPivotX((float)view.getWidth() * 0.5F);
    view.setPivotY(0.0F);
    view.setRotationY(rotation);
    Object v = view.getTag (R.id.logo_btn); // THIS IS ALWAYS NULL
    if (v == null) {
        Log.d ("ERROR", "null");
    } else if (position != 1){
        ((Button) v).setEnabled (false);
    }
}

0 个答案:

没有答案