我有一个包含多个视图的布局,其中一个视图必须根据屏幕大小进行缩放。截至目前,我已将其设置为250dp,因为它在5.1英寸设备上看起来不错,但是当在较小的设备上使用时,它就不再那么好了。我不能使用换行内容,因为它会使它看起来很糟糕,按钮的大小太小,所以它必须是屏幕宽度的1/3。是否可以在布局代码中执行此操作,还是必须在java代码中执行此操作?
答案 0 :(得分:0)
你需要覆盖onMeasure(...)然后在你的视图中调整此函数的大小。 Here是完美的解释和解决方案。 这个链接的一些参考代码如下......
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = 100;
int desiredHeight = 100;
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int width;
int height;
//Measure Width
if (widthMode == MeasureSpec.EXACTLY) {
//Must be this size
width = widthSize;
} else if (widthMode == MeasureSpec.AT_MOST) {
//Can't be bigger than...
width = Math.min(desiredWidth, widthSize);
} else {
//Be whatever you want
width = desiredWidth;
}
//Measure Height
if (heightMode == MeasureSpec.EXACTLY) {
//Must be this size
height = heightSize;
} else if (heightMode == MeasureSpec.AT_MOST) {
//Can't be bigger than...
height = Math.min(desiredHeight, heightSize);
} else {
//Be whatever you want
height = desiredHeight;
}
//MUST CALL THIS
setMeasuredDimension(width, height);
}
答案 1 :(得分:0)
您可以查看PercentRelativeLayout
中的Percent Support Library。这是一个RelativeLayout
,您可以在其中指定百分比的视图大小,例如将其宽度设置为33%。
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
app:layout_widthPercent="33%"
app:layout_heightPercent="33%"
app:layout_marginTopPercent="25%"
app:layout_marginLeftPercent="25%" />
</android.support.percent.PercentRelativeLayout>
答案 2 :(得分:0)
是否可以在布局代码中执行此操作
是的。使用android:layout_weight
的{{1}}和android:weightSum
属性非常简单:
LinearLayout