其实我已经创建了一系列按钮,现在我的问题是它是否适合所有屏幕分辨率或者不是..我已经使用了nexus的设备而且这里的工作正常......我的意思是说所有按钮按顺序排列。当我将背景图像放置到每个按钮时,它工作得很好..现在我怀疑它是否适用于更便宜的设备,我写的相同代码或我必须做一些额外的事情。这意味着它是否适合所有屏幕分辨率......或者不是......我写的代码是..
LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout);
LinearLayout rowLayout=null;
LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1);
//Create Button
for (i = 0; i<6; i++){
rowLayout = new LinearLayout(this);
rowLayout.setWeightSum(7);
layoutVertical.addView(rowLayout,param);
for(j=0;j<7;j++){
pBtnDay[i][j]=new Button(this);
rowLayout.addView(pBtnDay[i][j],param);
pBtnDay[i][j].setOnLongClickListener(this);
pBtnDay[i][j].setOnClickListener(this);
}
}
return true;
当我试图找到按钮的宽度和高度时,还会再次返回0 ..为什么?
答案 0 :(得分:1)
Adnroid应用程序的基本理念之一是具有不同屏幕分辨率,像素深度和Oreintation的跨平台的可移植性。
如何实现这一点,已在this链接中得到很好的解释。享受!
如果您对获取屏幕参数感兴趣,则可以使用DisplayMetrics和Window Manager。 词shash
答案 1 :(得分:1)
如果您确切知道屏幕上多个设备上显示的元素数量,那么使用weightSum是最佳解决方案。因此,如果它出现在HTC Wildfire(LDPI)上,那么它也将在您的Nexus(HDPI)上显示。
至于你的第二个问题,我假设你正在使用View.getHeight()和View.getWidth()来获取这些值。由于你的按钮实际上还没有被绘制,Android没有为它们指定维度值,这就是它们为什么会出现0的原因。如果你需要onCreate中这些按钮的宽度和高度,那么你需要做一些数学计算你自己的:))
答案 2 :(得分:1)
对于第二个答案:如果您需要按钮尺寸值,请使用:
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
if (hasFocus)
{
// calculates dimesions
}
}
事实上,正如之前所说,在onCreate中你仍然没有计算它们。