如何以编程方式在另一个视图的中心显示视图

时间:2014-03-06 13:47:13

标签: android android-layout android-custom-view

我有一个buttonView1和一个customView1只能画一个小圆圈。在main_layoutbuttonView1可见。

如何在点击按钮时以编程方式在customView1的中心显示buttonView1

注意:我们不想改变按钮背景。我们希望在按下按钮时在另一个视图(按钮)上显示新视图(customView或任何其他视图,如editText)。


布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/buttonView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="102dp"
        android:layout_marginTop="86dp"
        android:text="@string/button_text" />

</RelativeLayout>

活动代码

    ///...
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mButton = (Button)findViewById(R.id.buttonView1);
            mButton.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.buttonView1:
                // do sth here
                break;

            default:
                break;
            }

        }
///...

2 个答案:

答案 0 :(得分:0)

RelativeLayout.LayoutParams layoutParams = 
    (RelativeLayout.LayoutParams)positiveButton.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
yourView.setLayoutParams(layoutParams);

答案 1 :(得分:0)

public void MoveView() {

        float a = parent_view.getWidth() / 2;
        final ValueAnimator positionAnimator =
                ValueAnimator.ofFloat(current_view.getX(), a);
        positionAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
        positionAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float x = (Float) positionAnimator.getAnimatedValue();
                current_view.setX(x);
            }
        });

        positionAnimator.setDuration(100);
        positionAnimator.start();
    }

parent_view是您希望放置current_view的视图。

希望能帮助。