Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓如何从java代码更改视图大小_Java_Android - Fatal编程技术网

安卓如何从java代码更改视图大小

安卓如何从java代码更改视图大小,java,android,Java,Android,我有这个问题。 我有一项活动: public class MyActivity extends Activity { public View m_top_overlay; private MyFrameLayout m_preview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo

我有这个问题。 我有一项活动:

public class MyActivity extends Activity
{
   public View m_top_overlay;
   private MyFrameLayout m_preview;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);

    m_preview = (MyFrameLayout) findViewById(R.id.my_preview);  
    m_top_overlay = (View) findViewById(R.id.top_overlay);
    m_frame_preview.setParent(this);
}
   ...
和xml:

<com.myexample.MyFrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_preview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" >

    <View             
        android:id="@+id/top_overlay"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_gravity="top"
        android:background="#FFFFFF"
        />
<com.myexample.MyFrameLayout />

然后,我从FrameLayout继承了自定义视图

public class MyFrameLayout extends FrameLayout
{   
    private MyActivity m_myActivity;

<constructors...>

    public void setParent(MyActivity _activity)
    {
        m_myActivity = _activity;
    }

    @Override
    protected void onLayout (boolean changed, int left, int top, int right, int bottom)
    {
        super.onLayout(changed, left, top, right, bottom);
        ViewGroup.LayoutParams params = m_myActivity.m_top_overlay.getLayoutParams();
        params.height = 200;
        m_myActivity.m_top_overlay.setLayoutParams(params);
    }
公共类MyFrameLayout扩展了FrameLayout
{   
私人MyActivity m_MyActivity;
公共void setParent(MyActivity\u活动)
{
m_myActivity=_activity;
}
@凌驾
仅限受保护的空心布局(布尔值已更改、整数左侧、整数顶部、整数右侧、整数底部)
{
超级。仅限布局(已更改、左、上、右、下);
ViewGroup.LayoutParams params=m_myActivity.m_top_overlay.getLayoutParams();
参数高度=200;
m_myActivity.m_top_overlay.setLayoutParams(参数);
}
所以,我想从java代码中设置视图的高度(m_top_view)。值200就是一个例子。我将计算它。
但是我所描述的方法不起作用。

这只是猜测,但请尝试将ViewGroup.LayoutParams更改为FrameLayout.LayoutParams()不,它也不起作用。我想可能是我不应该使用Activity的成员并使用View对象作为MyFrameLayout的子元素。但是在这种情况下,我不知道如何选择我需要的一个,因为我的真实Activity中有多个子元素。