3

LinearLayout以下に示すように拡張するJavaクラスを作成しました

         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レイアウトでカスタムコンポーネントを使用する場合は、2番目のコンストラクター(、をとるコンストラクター)を実装する必要がありContextますAttributeSet。第二に、あなたはあなたのためにゲッターメソッドを追加することができます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 に答える