首先抱歉我的英语不好:) 我是Android新编程的新手...... 我正在尝试在运行时设置视图。我已成功创建自己的View类(从AbsoluteView派生),但如果我尝试调整视图内容的大小,则没有任何反应:(
这是我写的完整代码:
package com.CaliskanDevelopment.LottoGenerator;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.AbsoluteLayout;
import android.widget.ToggleButton;
@SuppressWarnings("deprecation")
public class CSelectNumbersLayout extends AbsoluteLayout
{
private ToggleButton m_clButton;
public CSelectNumbersLayout( Context clContext )
{
super( clContext );
CreateButtons();
}
public CSelectNumbersLayout( Context clContext,
AttributeSet clAttributeSet )
{
super( clContext, clAttributeSet );
CreateButtons();
}
public CSelectNumbersLayout( Context clContext,
AttributeSet clAttributeSet,
int i32DefStyle )
{
super( clContext, clAttributeSet, i32DefStyle );
CreateButtons();
}
private void CreateButtons()
{
LayoutParams clLayoutParams = (LayoutParams) generateDefaultLayoutParams();
int i32ButtonWidth = 10;
int i32ButtonHeight = 10;
int i32PosX = 0;
int i32PosY = 0;
clLayoutParams.x = i32PosX;
clLayoutParams.y = i32PosY;
clLayoutParams.width = i32ButtonWidth;
clLayoutParams.height = i32ButtonHeight;
m_clButton = new ToggleButton( getContext() );
m_clButton.setText( "setText" );
m_clButton.setTextOn( "setTextOn" );
m_clButton.setTextOff( "setTextOff" );
m_clButton.setLayoutParams( clLayoutParams );
this.addView( m_clButton );
}
protected void onSizeChanged( int i32Width,
int i32Height,
int i32OldWidth,
int i32OldHeight )
{
int i;
int i32ButtonWidth = ( i32Width / 7 );
int i32ButtonHeight = ( i32Height / 7 );
int i32PosX;
int i32PosY;
if ( i32ButtonWidth > i32ButtonHeight )
i32ButtonWidth = i32ButtonHeight;
else if ( i32ButtonHeight > i32ButtonWidth )
i32ButtonHeight = i32ButtonWidth;
i32PosX = ( i32Width / 2 ) - ( ( i32ButtonWidth * 7 ) / 2 );
i32PosY = ( i32Height / 2 ) - ( ( i32ButtonHeight * 7 ) / 2 );
LayoutParams clLayoutParams = (LayoutParams) m_clButton.getLayoutParams();
clLayoutParams.x = i32PosX;
clLayoutParams.y = i32PosY;
clLayoutParams.width = i32ButtonWidth;
clLayoutParams.height = i32ButtonHeight;
m_clButton.setLayoutParams( clLayoutParams );
m_clButton.invalidate();
this.invalidate();
}
}
我正在尝试调整函数onSizeChanged中创建的按钮的大小,因为我已经知道这是我第一次知道我的视图有多大。调用像
这样的东西m_clButton.invalidate();
m_clButton.postInvalidate();
this.invalidate();
没有所需的结果。 视图位于选项卡内。如果我第一次单击选项卡以显示此布局按钮是10 x 10(我在构造函数中创建),我已调试代码,它运行onSizeChanged但按钮未调整大小。 如果我显示另一个视图并再次单击此选项卡,则会调整按钮的大小。
我认为问题是刷新函数onSizeChanged()中的视图,但是怎么做呢???
提前致谢...
Hasan Caliskan