如何在PercentRelativeLayout中创建Percent动态?

时间:2016-10-26 11:52:20

标签: android android-layout android-percentrelativelayout

我正在使用设计支持库中的PercentRelativeLayout,我希望为7英寸和10英寸平板电脑设置不同的百分比。

例如,如果我有ImageView,如下所示。

<ImageView
     android:id="@+id/contactDoc"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     app:layout_widthPercent="70%"
     app:layout_heightPercent="70%"
     android:layout_centerHorizontal="true"
     android:clickable="true"
     android:src="@drawable/dashboard_contactdoctor" />

现在,如果我想为7英寸平板电脑设置70%,为10英寸平板电脑设置60%,而不需要像sw720dp那样设置不同的布局文件夹。我可以做吗? 感谢帮助。

4 个答案:

答案 0 :(得分:1)

这些百分比是fraction资源。您应该可以设置res/values/fractions.xmlres/values-sw720dp/fractions.xmldefine the values for the fractions。然后,在布局中使用@fraction/whatever_you_called_it

答案 1 :(得分:0)

您可以针对不同的屏幕尺寸使用不同的布局。您可以在文档中详细了解它:https://developer.android.com/training/multiscreen/screensizes.html

不提供多种布局的可能性是将ImageView置于LinearLayout内,android:weightSum为10,然后以编程方式设置ImageView的权重:< / p>

LinearLayout.LayoutParams layoutParams = yourView.getLayoutParams();
layoutParams.weight = WHATEVER;
yourView.setLayoutParams(layoutParams);

答案 2 :(得分:0)

尝试使用constraint layout,它可以在android studio 2.2及之后使用。

使用此功能,您可以根据屏幕百分比添加垂直和水平指南,然后根据这些指南设置图像视图的高度和宽度

答案 3 :(得分:0)

首先,您需要检测7“或10”平板电脑。我假设你已经知道如何根据你的问题做到这一点。如果没有,请查看this great answer

在您知道要处理的设备之后,请使用以下代码放入if条件(或其他位置)以在代码中定义视图的百分比:

    View view = findViewById(R.id.yourView);
    PercentLayoutHelper.PercentLayoutParams params =
            (PercentRelativeLayout.LayoutParams) view.getLayoutParams();
    PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo();
    info.heightPercent = 0.60f;
    view.requestLayout();

基于another great answer