如何设置View的宽度等于任何displayize?

时间:2016-12-30 18:02:11

标签: android android-layout view

我正在使用HorizontalScrollView在屏幕上滑动TextViews。我现在的问题是,如果有任何方法可以使每个RelativeLayout的宽度与手机屏幕的宽度相匹配,则与用户使用的手机无关。

那么是否有办法获得设备的显示宽度,然后将其设置为RelativeLayout的宽度?或者甚至有更好的方法来做到这一点?

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="20dp"
    android:layout_marginTop="20dp"
    android:fillViewport="true">

    <LinearLayout  
        android:layout_width="wrap_content"
        android:layout_height="match_parent">

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:background="@android:color/holo_blue_dark">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textSize="15sp"
                android:textColor="@android:color/black"
                android:id="@+id/info"
                android:layout_margin="5dp"
                android:textAlignment="center"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/info"
                android:text="0"
                android:textSize="80dp"
                android:layout_centerHorizontal="true"
                android:id="@+id/getrunkeneLiter"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_light">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="@android:color/black"
                android:layout_margin="5dp"
                android:id="@+id/danke"
                android:textAlignment="center"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Feedback verfassen"
                android:onClick="feedback"
                android:layout_below="@+id/danke"
                android:layout_centerHorizontal="true"/>
        </RelativeLayout>

    </LinearLayout>

</HorizontalScrollView>

1 个答案:

答案 0 :(得分:1)

您可以获取屏幕大小并以编程方式将其设置为每个视图。或者,您可以使用加权LinearLayout并将其大小设置为元素数乘以屏幕大小。

您可以使用此功能获取屏幕尺寸(然后使用Point的x值):

public static Point getScreenSize(Context context) {
    final Point size = new Point();
    final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    final Display display = wm.getDefaultDisplay();
    display.getSize(size);
    return size;
}

要更新相对布局,您需要为每个布局添加一个ID。例如:

<RelativeLayout
    android:id="@+id/first_subview"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_dark">

然后在你的活动中:

private void updateViews() {
    Point screenSize = getScreenSize(this);
    updateView(findViewById(R.id.first_subview), screenSize);
    updateView(findViewById(R.id.second_subview), screenSize);
    ...
}

private void updateView(View view, Point screenSize) {
   view.getLayoutParams().width = screenSize.x
}