我正在使用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);
}
}