将自定义视图放入自定义 ScrollView

Posted

技术标签:

【中文标题】将自定义视图放入自定义 ScrollView【英文标题】:Putting Custom View Inside a Custom ScrollView 【发布时间】:2014-03-10 02:16:16 【问题描述】:

我正在创建一个带有自定义视图和自定义 ScrollViewandroid 应用。我正在尝试将自定义视图放在滚动视图中。它似乎不起作用,因为我只是收到一个空白屏幕。

Dashboard.java

package com.commentblock.fandoms;

import com.commentblock.fandom.R;
import com.commentblock.fandom.R.layout;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Toast;

public class Dashboard extends Activity 
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        //Set the content view to the dashbaord
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.setContentView(new StatusViewScroll(this));

    

StatusViewScroll.java

package com.commentblock.fandoms;

import android.content.Context;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.ScrollView;

public class StatusViewScroll extends RelativeLayout 
    public StatusViewScroll(Context c) 
        super(c);
        ScrollView scrollView = new ScrollView(c);
        StatusView statusView = new StatusView(c);
        scrollView.addView(statusView);
        addView(scrollView);
    

StatusView.java 在没有ScrollView 的情况下工作得很好,但是当我将它添加到ScrollView 时,它就会中断。没有错误,只是黑屏。

【问题讨论】:

您是否尝试为 statusView 添加任何布局参数? 什么意思?可以举个例子吗? LayoutParams mLayoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); scrollView.addView(statusView, mLayoutParams); 【参考方案1】:

我自己解决了我的问题。问题出在 StatusView.java,我需要覆盖 onMeasure 事件。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    WindowManager wm = (WindowManager) this.getContext().getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    setMeasuredDimension(display.getWidth(), display.getHeight());

【讨论】:

以上是关于将自定义视图放入自定义 ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义单元格放入另一个自定义单元格?

如何将自定义类型作为输入参数放入可调用语句中

如何将自定义视图动画化为自定义视图

如何将自定义字段放入 XMPP vCard Android/SMACK

如何将自定义视图拖动为 Xcode 6 中自定义视图的私有属性

将自定义视图绑定到点