我正在编写一个程序,我希望它始终具有16:9的屏幕。我为我写的主机2对象设置了一个基本的linearlayout。第一个覆盖了onMeasure方法,因此它将从屏幕上取出“方形”空间,第二个对象取其余部分。这在我拥有的16:9设备上看起来不错。但是当我在其他设备上试用它时,它看起来很糟糕。我试图从托管我的对象的linearlayout扩展,并覆盖布局的onMeasure方法。自定义Linearlayout好像16:9很好,但是我的第一个对象(正方形)仍然是大方块,而不是一个局限于16:9条带的小方块。以下是相关代码
MainActivity: @覆盖 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
layout = new MyLinear(this);
mField = new Field(this);
mField.setId(1);
control = new Controller(this);
control.setId(2);
layout.addView(mField);
layout.addView(control);
registerForContextMenu(control);
setContentView(layout);
mField.requestFocus();
}
自定义linearlayout的onMeasure代码如下所示
public class MyLinear extends LinearLayout{
private int height, width; // dimension of the screen
private Context m_context;
public MyLinear(Context context) {
super(context);
m_context=context;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int height_temp = View.MeasureSpec.getSize(heightMeasureSpec);
int width_temp = View.MeasureSpec.getSize(widthMeasureSpec);
double ratio = width_temp/(double)height_temp;
int final_height = (int) (width_temp/1.77);
height=final_height;
if (ratio<1.7) {
setMeasuredDimension(width_temp, (int) (width_temp/1.77));
} else {
setMeasuredDimension(width_temp, height_temp);
}
}
任何人都有更好的建议吗?
答案 0 :(得分:0)
您编辑,view.xml文件。添加res / layout-xlarge / my_layout.xml文件夹。添加my_layout.xml文件后res / layout-xlarge /文件夹...我很抱歉英文不好