【问题标题】:How to scale TextView in android and keep it in center如何在android中缩放TextView并将其保持在中心
【发布时间】:2023-03-13 03:51:02
【问题描述】:

我正在尝试使用测试视图的动态缩放进行布局。布局看起来像 - 见左下角。

现在该部分是一个复合控件。圆圈缩放得很好,但我不知道如何在正确缩放的同时使文本完美地定位在中间。我希望文本位于容器大小的 50% 处,并完美定位在中心。 RelativeLayout 只允许使用绝对值,而且我似乎无法使用 textview 获得权重,以便使用 textview 进行线性布局。

复合控制:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/VarioCircle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:contentDescription="Vario Circle"

        android:scaleType="fitCenter"
        android:src="@drawable/circle" />

    <LinearLayout
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:weightSum="1.0"
        android:orientation="vertical"
                        android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"

        >

        <TextView
            android:id="@+id/VarioText"
            android:layout_width="wrap_content"
            android:layout_height="0dp"

            android:text="200"
            android:textColor="#FF0000"
            android:textSize="60dp"
            android:layout_weight="0.7"
            android:textStyle="bold"
            android:typeface="monospace" />

    </LinearLayout>
</RelativeLayout>

整体布局:

 <com.proflite.VarioView
     android:id="@+id/Vario"
         android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentBottom="true"
 />

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    将 TextView 放入容器中。并将重力(视图属性)设置为中心。 将 TextViews 的宽度和高度设置为 wrap_content。 这将使 TextView 在其容器中居中。

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="200dp"
        android:layout_height="200dp" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="20sp" />
    </FrameLayout>
    

    这将使 TextView 在 FrameLayout 内居中

    【讨论】:

    • 虽然它确实居中,但缩放不适用。我已经发布了代码来展示我到目前为止所做的尝试
    • 要使 TextView 恰好是其容器的 50% 高度,您需要编写一些代码 - 仅使用布局 xml 是不可能的。但我怀疑你需要那个。您可以将容器高度设置为某个 DP,并将您的 TextView 设置为某个 SP。例如容器 200dp 和您的 TextViews 文本大小 20SP。这将在不同的屏幕尺寸(密度)中很好地缩放。还是有其他原因要进行缩放?
    【解决方案2】:

    试试这个

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    
    <ImageView
        android:id="@+id/VarioCircle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:contentDescription="Vario Circle"
        android:scaleType="fitCenter"
        android:src="@drawable/circle" />
    
        <TextView
            android:id="@+id/VarioText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="200"
            android:textColor="#FF0000"
            android:textSize="60dp"
            android:layout_weight="0.7"
            android:textStyle="bold"
            android:typeface="monospace" />
        </RelativeLayout>
    
        </RelativeLayout>
    

    【讨论】:

      【解决方案3】:

      我建议你制作一个 Button 小部件并将图像设置为具有 .png 格式的背景,具有透明背景。

      像这样:

      之后确保将其保存为 .png

      1)然后转到您的 xml 布局创建一个 Button 或 ImageButton 小部件。
      2)将此图片设置为背景图片(android:background="@drawable/yourcircle")
      3)最后你可以在里面放任何文本(android:text="blabla")+你可以使用Button.setText("blablabla")
      从代码中更改它 4)您还需要使用 Button.setTextSize(49) 更改字体大小。
      5) 终于到了中心,android:gravity="center"


      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多