Android: установите RelativeLayout.LayoutParams, но позже получите FrameLayout.LayoutParams - PullRequest
1 голос
/ 24 мая 2011

Я создал свой собственный макет ScrollView, как показано ниже

public class MyScrollView extends ScrollView {

RelativeLayout mContentView = null;
public MyScrollView(final Context context) {
    super(context);

    RelativeLayout.LayoutParams adaptLayout = new RelativeLayout.LayoutParams(320, 480);
    adaptLayout.setMargins(0, 0, 0, 0);
    setLayoutParams(adaptLayout);

    mContentView = new RelativeLayout(context);
    RelativeLayout.LayoutParams adaptLayout2 = new RelativeLayout.LayoutParams(300, 960);
    adaptLayout2.setMargins(0, 0, 0, 0);
    mContentView.setLayoutParams(adaptLayout2);

    Button btn = new Button(context);
    btn.setText("start dialog");
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mContentView.getLayoutParams();
            params.height = 1000;
            setLayoutParams(params);
            MyScrollView.this.invalidate();
        }

    });
}

Однако позже я получил тип FrameLayout.LayoutParams с помощью getLayoutParams ().
Действительно запутанное поведение ... Есть идеи? Спасибо.

05-25 02: 06: 58.082: ОШИБКА / AndroidRuntime (219): java.lang.ClassCastException: android.widget.FrameLayout $ LayoutParams
05-25 02: 06: 58.082: ОШИБКА / AndroidRuntime (219): на com.example.hello.MyScrollView $ 1.onClick (MyScrollView.java:42)
05-25 02: 06: 58.082: ОШИБКА / AndroidRuntime (219): atroid.view.View.performClick (View.java:2344)
05-25 02: 06: 58.082: ОШИБКА / AndroidRuntime (219): atroid.view.View.onTouchEvent (View.java:4133)

1 Ответ

0 голосов
/ 24 мая 2011

вы можете отобразить код, когда вы получите макет Params ??, я думаю, вы должны привести свои параметры к RelativeLayout.LayoutParams , сделать что-то вроде этого:

adaptLAyout = (RelativeLayout.LayoutParams)myRelativeLayout.getLayoutParams();

РЕДАКТИРОВАТЬ: я вижу, что у вас есть собственный ScrollView, так что вы можете сказать мне, гдевы используете его ?я думаю, что вы используете его в FrameLayout ??попробуйте использовать его в RelativeLayout, это решит проблему, потому что когда вы получаете LayoutParams, он ссылается на родительский Layout вашего представления, поэтому, если вы используете scrollView в FrameLAyout, вам следует работать с FrameLAyout.LayoutParams илиследует использовать его в RelativeLayout,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...