修复布局问题
Fix Layout issue
场景:I've four buttons arranged Relative Layout。这些按钮的文本在整个应用程序生命周期中变化,这使得按钮根据文本长度缩小或扩展。使用:RelativeLayout.getChildAt().setText();
Q1) 但我要求每个按钮占据屏幕宽度的 40%,但高度不同。
Q2) 特别是我的代码需要使用 getChildAt() 访问按钮。
我应该使用什么布局类型来替换 RelativeLayout 以将按钮的宽度设置为屏幕宽度的 40%,特别是这样我就可以使用 getChildAt()[=26 访问这些按钮=]?
SomeLayout.getChildAt(); 以便布局是按钮的直接父级。
<RelativeLayout android:id="@+id/buttonRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton1"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton2"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton3"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton4"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
现在我想不出任何布局元素可以让您这样做。
您可以尝试此操作,在您的代码 onCreate
或您的 init views/variables 方法之一上,获取按钮并将大小设置为屏幕的 40%,例如:
Display display = getWindowManager().getDefaultDisplay();
Point screenSize = new Point();
display.getSize(screenSize);
RelativeLayout rlParent = findViewById(R.id.<RELATIVE_LAYOUT_ID>);
for(int i = 0; i < 4; i++)
{
View btn = rlParent.getChildAt(i);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)btn.getLayoutParams();
params.width= screenSize.y * 0.4f;//40%
btn.setLayoutParams(params);
}
你真的很幸运。 Android 刚刚发布了一个新的百分比支持库。他们还没有文档,但这里有一个很好的示例项目,您可以使用它来了解如何使用该库。它基本上允许您按屏幕百分比调整视图小部件的大小。
https://github.com/JulienGenoud/android-percent-support-lib-sample
这里还有两篇文章也在谈论它:
http://www.androidauthority.com/using-the-android-percent-support-library-630715/
http://inthecheesefactory.com/blog/know-percent-support-library/en
Android percent 支持库通过替换我们传统的 LinearLayout
为屏幕上的 android 小部件提供了百分比比例,这是一项了不起的工作
<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">
<TextView
android:id="@+id/fifty_huntv"
android:background="#ff7acfff"
android:text="20% - 50%"
android:textColor="@android:color/white"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_heightPercent="20%"
app:layout_widthPercent="50%" />
<TextView
android:layout_toRightOf="@id/fifty_huntv"
android:background="#ffff5566"
android:text="80%-50%"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_heightPercent="80%"
app:layout_widthPercent="50%"
/>
</android.support.percent.PercentRelativeLayout>
真的很棒!!!
场景:I've four buttons arranged Relative Layout。这些按钮的文本在整个应用程序生命周期中变化,这使得按钮根据文本长度缩小或扩展。使用:RelativeLayout.getChildAt().setText();
Q1) 但我要求每个按钮占据屏幕宽度的 40%,但高度不同。 Q2) 特别是我的代码需要使用 getChildAt() 访问按钮。
我应该使用什么布局类型来替换 RelativeLayout 以将按钮的宽度设置为屏幕宽度的 40%,特别是这样我就可以使用 getChildAt()[=26 访问这些按钮=]? SomeLayout.getChildAt(); 以便布局是按钮的直接父级。
<RelativeLayout android:id="@+id/buttonRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton1"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton2"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton3"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/optionButton4"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
现在我想不出任何布局元素可以让您这样做。
您可以尝试此操作,在您的代码 onCreate
或您的 init views/variables 方法之一上,获取按钮并将大小设置为屏幕的 40%,例如:
Display display = getWindowManager().getDefaultDisplay();
Point screenSize = new Point();
display.getSize(screenSize);
RelativeLayout rlParent = findViewById(R.id.<RELATIVE_LAYOUT_ID>);
for(int i = 0; i < 4; i++)
{
View btn = rlParent.getChildAt(i);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)btn.getLayoutParams();
params.width= screenSize.y * 0.4f;//40%
btn.setLayoutParams(params);
}
你真的很幸运。 Android 刚刚发布了一个新的百分比支持库。他们还没有文档,但这里有一个很好的示例项目,您可以使用它来了解如何使用该库。它基本上允许您按屏幕百分比调整视图小部件的大小。
https://github.com/JulienGenoud/android-percent-support-lib-sample
这里还有两篇文章也在谈论它:
http://www.androidauthority.com/using-the-android-percent-support-library-630715/
http://inthecheesefactory.com/blog/know-percent-support-library/en
Android percent 支持库通过替换我们传统的 LinearLayout
<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">
<TextView
android:id="@+id/fifty_huntv"
android:background="#ff7acfff"
android:text="20% - 50%"
android:textColor="@android:color/white"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_heightPercent="20%"
app:layout_widthPercent="50%" />
<TextView
android:layout_toRightOf="@id/fifty_huntv"
android:background="#ffff5566"
android:text="80%-50%"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_heightPercent="80%"
app:layout_widthPercent="50%"
/>
</android.support.percent.PercentRelativeLayout>
真的很棒!!!