我面临着从Android手机到平板电脑保留相同布局的问题。
原因是因为我的大多数图像都是固定大小的。因此,从手机换成平板电脑时会出现问题。
我的活动布局是这样的。
<relativelayout> - with match_parent for both width and height
<linearlayout> - with match_parent for both width and height
<linearlayout> - with match_parent for for width only and match_content for height
<imageview> - fixed size - 94 dp and 32 dp
是否有可能做类似于给出宽度百分比的东西,就像我们在html中所做的那样,而不是修复dp?这样它就可以自动调整到父宽度。
谢谢!
答案 0 :(得分:6)
请尝试这样的事情:
第1步:使用此代码动态计算设备屏幕的高度和宽度。
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenHeight = displaymetrics.heightPixels;
int screenWidth = displaymetrics.widthPixels;
第2步:使用此代码在您的活动或片段中获取ImageView的引用
ImageView myImageView = (ImageView) findViewById(R.id.your_image_view);
第3步:现在根据屏幕的高度和宽度计算ImageView的高度和宽度。
假设您想要与屏幕对应的10%高度ImageView; 然后图像高度应为
int imgHeight = screenHeight* 0.10 // 10% of screen.
以同样的方式宽度你想要25% 那应该是:
int imgWidth = screenWidth* 0.25 // 25% of screen.
第4步:最后通过此代码设置ImageView的高度和宽度。
myImageView.getLayoutParams().height = imgHeight;
myImageView.getLayoutParams().width = imgWidth;
希望它会对你有所帮助。
答案 1 :(得分:0)
如果在所有图像中设置相同的宽度
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" />
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" />
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" />
</LinearLayout>
答案 2 :(得分:0)
我认为制作不同尺寸的相同图像并根据它们的尺寸将它们设置为res / drawable(hdpi,mdpi等)将起作用。因为android会根据设备dpi自动从这些文件夹中选择图像。