是否可以将Button宽度设置为屏幕总大小的50%(来自Java代码)。 我找到了一些答案,但是我想用Java代码而不是XML来更改Button的大小。
答案 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
实用程序类,代表用于 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" />
第二路
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());