0

场景:我有四个按钮排列相对布局。这些按钮的文本随着应用程序的生命而变化,这使得按钮根据文本长度缩小或扩大。使用:RelativeLayout.getChildAt().setText();

Q1)但我要求每个按钮占据屏幕宽度的 40%,但高度不同。Q2)特别是我的代码需要使用getChildAt()访问按钮。

我应该使用什么 Layout 类型来替换 RelativeLayout 以将 Button 的宽度设置为屏幕宽度的 40%,特别是这样我可以使用getChildAt()访问这些 Button ? 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>
4

3 回答 3

1

你实际上只是走运。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

于 2015-08-27T19:27:06.097 回答
1

Android 百分比支持库做了一项很棒的工作,通过替换我们传统的在屏幕上为 android 小部件提供百分比LinearLayout

Github 演示在这里!

<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>

非常棒 !!!

于 2015-08-31T07:49:28.447 回答
0

现在我想不出任何允许你这样做的布局元素。您可以在您的代码onCreate或您的 init 视图/变量方法之一上尝试此操作,获取按钮并将大小设置为屏幕的 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);
}
于 2015-08-27T19:06:28.550 回答