根据屏幕尺寸调整texview以适当的比例调整内容

时间:2016-12-23 10:56:09

标签: android android-layout android-gridlayout

在我的应用程序中,我使用以下代码创建日期视图。我必须多次创建这些日期UI元素,以制作像表格UI一样的日历。我使用GridLayoutManager和RecycleView创建整个视图,看起来像一个月。 加载UI时,UI中的所有文本视图仍然显示大字体。我如何按比例缩小文本?我是否必须以编程方式调整字体,还是有一种方法可以调整内容以适应/缩放可用的UI?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.myApps.app1.calendarDayViewFragment">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/cardview_light_background"
        tools:context="com.myApps.app1.monthDetailedDayViewFragment"
        android:id="@+id/layout_detailed_day_view">

        <LinearLayout android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true">

            <!-- Section Row 2 -->
            <LinearLayout android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/linear_layout_section_1">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="row_text_1_1"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information_row_1_1"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="row_text_1_2"
                    android:id="@+id/textView_day_information_row_1_2"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:gravity="right"
                    android:textColor="@color/colorPrimary" />
            </LinearLayout>

            <!-- Section Row 2 -->
            <LinearLayout android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/linear_layout_section_2" >

            <LinearLayout android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/linear_layout_section_2_1"
                android:layout_weight="1" >

                <!-- Next to Big TEXT, row 1 -->
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Section_2_text_row_1"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information1"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

                <!-- Next to Big TEXT, row 2 -->
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Section_2_text_row_2"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information2"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

                <!-- Next to Big TEXT, row 3 -->
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Section_2_text_row_3"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information3"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

                <!-- Next to Big TEXT, row 4 -->
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Section_2_text_row_4"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information4"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

                <!-- Next to Big TEXT, row 5 -->
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Section_2_text_row_5"
                    android:textAlignment="textStart"
                    android:id="@+id/textView_day_information5"
                    android:textStyle="normal|bold"
                    android:textSize="16sp"
                    android:textColor="@color/colorPrimary" />

            </LinearLayout>

            <LinearLayout android:orientation="horizontal"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/linear_layout_section_2_2"
                android:layout_weight="1">

                <!-- Big Text -->
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="१०"
                    android:id="@+id/calendar_day_header"
                    android:textStyle="normal|bold"
                    android:textSize="140dp"
                    android:textColor="@color/colorPrimary"
                    android:gravity="right" />

            </LinearLayout>

        </LinearLayout>

            <!-- Section Row 3 -->
            <LinearLayout android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/linear_layout_section_3">

            <LinearLayout android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/linear_layout_section_3_1">
                <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="text_row_3_1"
                android:id="@+id/textView_information_row_3_1"
                android:textStyle="normal|bold"
                android:textSize="16sp"
                android:gravity="right"
                android:textColor="@color/colorPrimary" />
                <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="text_row_3_2"
                android:id="@+id/textView_information_row_3_2"
                android:textStyle="normal|bold"
                android:textSize="16sp"
                android:gravity="right"
                android:textColor="@color/colorPrimary" />
            </LinearLayout>

        <LinearLayout android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/linear_layout_section_3_2">

            <ImageView
                android:layout_width="32dp"
                android:layout_height="32dp" android:src="@drawable/ic_image1"
                android:layout_alignParentRight="true"
                android:layout_gravity="right"/>

        </LinearLayout>

    </LinearLayout>

        </LinearLayout>

    </RelativeLayout>
</FrameLayout>

这是RecycleView代码:

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
                            android:id="@+id/recyclerview_mothly_dates"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:scrollbars="vertical"
                            android:background="@android:color/holo_green_light" >

                        </android.support.v7.widget.RecyclerView>

谢谢, IamHuM

2 个答案:

答案 0 :(得分:0)

为这样的值创建多个文件夹,并在每个文件夹中粘贴dimens.xml,并使用不同的值管理文本大小。

values
values-xhdpi
values-xxhdpi
values-xxxhdpi
values-sw600dp
values-sw800dp

<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="१०" android:id="@+id/calendar_day_header" android:textStyle="normal|bold" android:textSize="@dimen/test_140_size" android:textColor="@color/colorPrimary" android:gravity="right" />

注意:根据每个具有相同名称的dimens.xml文件中的分辨率,在sp中给出不同的文本大小值。

答案 1 :(得分:0)

您可以将此库添加到您的gradle文件中  compile 'com.intuit.sdp:sdp-android:1.0.3'

您需要做的就是:添加 android:textSize =“@ dimen / _13sdp”

您必须使用 sdp 而不是 dp ,这会根据任何设备所需的尺寸自动缩放textView或任何其他视图,而不管其大小

希望这可以解决您的问题。

    <TextView
    android:id="@+id/profile_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World"
    android:textSize="@dimen/_13sdp" />