3

我创建了一个扩展的 Java 类,LinearLayout如下所示

         public class CustomLinear extends LinearLayout{

        Context context;

         public CustomLinear(Context context) {
        super(context);
          this.context=context;

         ViewFlipper viewFlipper=new ViewFlipper(context);
         viewFlipper.setLayoutParams(this.getLayoutParams());
        this.addView(viewFlipper);

        }

并将自定义构建的布局包含到我的 Main.xml 中,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">



              <com.homevito.customlayout.CustomLinear
            android:id="@+id/one"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:background="@drawable/alerts"
            android:orientation="horizontal" />


</LinearLayout>

在我的 MainActivity 中,我使用 main.xml 作为内容视图,如下所示:

     public class MainActivity extends Activity {



         /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
            setContentView(R.layout.main);


        }
    }

我想处理viewFlipper来自MainActivity. 我尝试设置 ID,viewFlipper但仍然有帮助...

我怎样才能处理viewflipper..提前谢谢

4

2 回答 2

2

尝试以下片段

class CustomLinear extends LinearLayout {

    private Context context;

    public CustomLinear(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;

        ViewFlipper viewFlipper = new ViewFlipper(context);
        viewFlipper.setId(1234);
        viewFlipper.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        this.addView(viewFlipper);

    }

并在 onCreate()

CustomLinear customLinear = (CustomLinear) findViewById(R.id.one);

ViewFlipper flipper = (ViewFlipper) customLinear.findViewById(1234);
于 2012-06-18T12:46:18.407 回答
1

首先,如果您在 xml 布局中使用自定义组件,则需要实现第二个构造函数(采用 , 的构造函数ContextAttributeSet。其次,您可以为您添加一个 getter 方法ViewFlipper

public class CustomLinear extends LinearLayout{

        Context context;
        private ViewFlipper mFlipper;

        public CustomLinear(Context context, AttributeSet attrs) {
             super(context, attrs);
             this.context=context;
             mFlipper = new ViewFlipper(context);
             mFlipper.setLayoutParams(this.getLayoutParams());
             this.addView(mFlipper);
        }

      // the getter method
      public ViewFlipper getTheFlipper() {
           return mFlipper;
      }

然后在您的活动中,您可以简单地执行以下操作:

setContentView(R.layout.main);
CustomLinear cl = (CustomLinear) findViewById(R.id.one);
ViewFlipper flipperReference = cl.getTheFlipper();
于 2012-06-18T12:41:41.323 回答