Я хотел бы создать приложение, которое может работать с устройствами любого разрешения экрана.Как создать пользовательский вид с относительным размером?
Моя идея: создать один пользовательский вид для каждого типа вида, который я использую, и использовать layout_width и layout_height, указанные в XML, в процентах от родительского размера (например, layout_width = "100dp" эквивалентно fill_parent, а layout_width = "50dp" означает, что ширина View будет равна половине родительской).
Вот класс пользовательских TextView я сделал:
public class RSTextView extends TextView {
public RSTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int w, int h) {
int parentWidth = ((View)this.getParent()).getWidth();
int parentHeight = ((View)this.getParent()).getHeight();
Log.i(null, "Width: " + w + "; Height: " + parentHeight);
this.setMeasuredDimension(parentWidth * MeasureSpec.getSize(w)/100,
parentHeight * MeasureSpec.getSize(h)/100);
}
}
Но это не работает. Размер parentWidth и parentHeight всегда равен 0.
Итак, во-первых, это хорошая идея сделать это именно так, или у вас есть идеи по созданию приложения с относительным размером?
И если это правильный путь, как я могу получить размер родителей View из метода onMeasure?
Спасибо!
Спасибо! Ну, проблема в том, что layout_weight работает только с LinearLayout, а не с RelativeLayout. Но я смущен, что лучший способ писать приложения, которые работают с устройствами любого размера? – nbarraille 2010-12-01 14:57:42