Я хотел бы разработать приложение, которое могло бы работать с устройствами с любым разрешением экрана.
Моя идея заключалась в том, чтобы создать одно пользовательское представление для каждого типа представления, которое я использую, и использовать 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
?