Я построил свой собственный макет 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: ERROR/AndroidRuntime (219): java.lang.ClassCastException: android.widget.FrameLayout $LayoutParams
05-25 02: 06: 58.082: ERROR/AndroidRuntime (219): at com.example.hello.MyScrollView $1.onClick(MyScrollView.java:42)
05-25 02: 06: 58.082: ОШИБКА /AndroidRuntime (219): at android.view.View.performClick(View.java:2344)
05-25 02: 06: 58.082: ERROR/AndroidRuntime (219): at android.view.View.onTouchEvent(View.java:4133)
Вы можете отобразить код, когда получаете макет Params??, я думаю, что вы должны направить свои параметры в RelativeLayout.LayoutParams, сделайте что-то вроде этого:
adaptLAyout = (RelativeLayout.LayoutParams)myRelativeLayout.getLayoutParams();
EDIT: я вижу, что у вас есть собственный ScrollView, так что вы можете сказать мне, где вы его используете? Я думаю, что вы используете его в FrameLayout?? попробуйте использовать его в RelativeLayout, что устранит проблему, потому что когда вы получаете LayoutParams, он ссылается на родительский макет вашего представления, поэтому, если вы используете scrollView в FrameLAyout, вы должны работать с FrameLAyout.LayoutParams или вы должен использовать его в RelativeLayout,