非常简短:我已经绘制了3个形状,xml跨越设备的整个宽度:
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
<ImageView
android:id="@+id/menu_ebook"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@color/menuBlue"
android:clickable="true"
android:contentDescription="@string/menu_ebook"
android:soundEffectsEnabled="false" />
<ImageView
android:id="@+id/menu_library"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_weight="1"
android:background="@color/menuBlue"
android:clickable="true"
android:contentDescription="@string/menu_ebook"
android:soundEffectsEnabled="false" />
<ImageView
android:id="@+id/menu_faq"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@color/menuBlue"
android:clickable="true"
android:contentDescription="@string/menu_ebook"
android:soundEffectsEnabled="false" />
</LinearLayout>
这三种形状应始终在每个设备上都是正方形。这是否可以通过xml,如果不是如何以编程方式执行此操作?
澄清:所有3个ImageView的高度应该等于1个ImageView的宽度。
提前谢谢
答案 0 :(得分:7)
你不能轻易做到ImageViews广场。唯一的标准方法是设置exact width = height = some_value。如果您知道方形边长,则可以将此值应用于imageViews。
如果你真的想让一些视图成为正方形,你应该创建自定义视图并覆盖onMeasure方法。您可以运行标准测量功能,然后使用setMeasuredDimension设置相等的维度。
E.g。如果它是一个ViewGroup:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// simple implementation, this can be done better )
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int squareSize = getMeasuredWidth(); // square size
int measureSpec = MeasureSpec.makeMeasureSpec(squareSize, MeasureSpec.EXACTLY);
super.onMeasure(measureSpec, measureSpec); // we should remeasure childrens to fit square
}
或者喜欢这个,如果它的观点:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int squareSize = getMeasuredWidth();
setMeasuredDimension(squareSize, squareSize);
}
All Overrides将视图的宽度用作方形大小。
答案 1 :(得分:-1)
在父版面android:weightSum="3"
中添加linearLayout1
。