设置布局宽度占总屏幕宽度的百分比

时间:2018-10-28 11:56:56

标签: java android

是否可以将Button宽度设置为屏幕总大小的50%(来自Java代码)。 我找到了一些答案,但是我想用Java代码而不是XML来更改Button的大小。

6 个答案:

答案 0 :(得分:1)

尝试一下。

DisplayMetrics metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
ViewGroup.LayoutParams params = yourButton.getLayoutParams();
params.width = metrics.widthPixels;

    try {
        double ratio = 0.5;
        params.height = Double.valueOf(ratio * height).intValue();
        yourButton.setLayoutParams(params);
    } catch (Exception e) {
        e.printStackTrace();
    }

答案 1 :(得分:1)

许多方法可以实现这一目标,您可以尝试如下操作:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;

ViewGroup.LayoutParams params= yourBtn.getLayoutParams();
params.width= width * 1/2;
yourBtn.setLayoutParams(params);
yourBtn.requestLayout(); 

答案 2 :(得分:1)

就这么简单。

button.getLayoutParams().width = Resources.getSystem().getDisplayMetrics().widthPixels/2;

答案 3 :(得分:1)

希望对您有帮助

  

可能与Guideline constraint

Guideline

  

实用程序类,代表用于   ConstraintLayout。辅助对象未显示在设备上(它们是   标记为View.GONE),仅用于布局目的。他们只   在ConstraintLayout中工作。

     

准则可以是水平或垂直的:

     

垂直准则的宽度为零,高度为零   ConstraintLayout父水平参考线的高度为零   以及其ConstraintLayout父级的宽度   可以通过三种不同方式实现:

     

指定距布局左侧或顶部的固定距离   (layout_constraintGuide_begin)指定与   布局(layout_constraintGuide_end)的右侧或底部   指定布局的宽度或高度的百分比   (layout_constraintGuide_percent)然后可以将小部件限制为   准则,允许从多个位置轻松放置多个小部件   一个准则,或者通过使用百分比来允许响应式布局行为   定位。

     

请参阅ConstraintLayout.LayoutParams中的属性列表以设置   XML准则以及相应的准则   ConstraintSet.setGuidelineBegin(int, int), ConstraintSet.setGuidelineEnd(int, int) and ConstraintSet.setGuidelinePercent(int, float) functions in ConstraintSet.

<android.support.constraint.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.50" />

**

  

示例

**

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.constraint.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.50" />


    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:text="TextView"
        app:layout_constraintBottom_toTopOf="@+id/guideline4"
        app:layout_constraintTop_toTopOf="@+id/guideline3"
        tools:layout_editor_absoluteX="104dp" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.80" />

</android.support.constraint.ConstraintLayout>
  

示例布局高度为屏幕的50%

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toTopOf="@+id/guideline4"
    app:layout_constraintTop_toTopOf="parent">

</RelativeLayout>

<android.support.constraint.Guideline
    android:id="@+id/guideline4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.50" />
  

第二路

getDefaultDisplay ()

  

public abstract Display getDefaultDisplay()返回以下内容的Display   该WindowManager实例将创建新窗口。

     

尽管使用此方法的名称,但返回的显示不是   必须是系统的主要显示(请参阅   Display.DEFAULT_DISPLAY)。返回的显示可能改为   此窗口管理器实例正在管理的辅助显示。认为   作为该WindowManager实例默认使用的显示。

     

要在其他显示器上创建窗口,您需要获取一个   该显示的WindowManager。 (请参见WindowManager类   文档以获取更多信息。)

Display mDisplay = getWindowManager().getDefaultDisplay();
final int width  = mDisplay.getWidth();
final int height = mDisplay.getHeight();

// now simple height/2  use it as u want

答案 4 :(得分:0)

也许是这样?不知道它是否会完全按照您的要求工作,但这就是它的基本概念

Configuration configuration = getActivity().getResources().getConfiguration();
        int screenWidthDp = configuration.screenWidthDp;
        final float scale = context.getResources().getDisplayMetrics().density;
        int pixels = (int) (screenWidthDp * scale);
button1.setWidth(pixels*0.5);

答案 5 :(得分:0)

尝试

LayoutParams params = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.setMargins(left, top, right, bottom); yourbutton.setLayoutParams(params);

Resources r = mContext.getResources();
int px = (int) TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP,
    yourdpmeasure, 
    r.getDisplayMetrics());