无法更改 TextView 的大小

Posted

技术标签:

【中文标题】无法更改 TextView 的大小【英文标题】:Cant change size of TextView 【发布时间】:2016-04-20 07:10:16 【问题描述】:

字体大小已更改,但其他视图没有移动。我不能在这个布局中添加任何元素。我只能修改现有视图,例如我可以更改颜色或文本但 viewHolder.layout.addView(textView) 不做任何事情。为什么view 的大小没有变化?

public class StackAdapter extends BaseAdapter...
...
public View getView...
final ViewHolder viewHolder;
...
viewHolder.layout = (LinearLayout) convertView.findViewById(R.id.telephone_1);
...
    viewHolder.layout.post(new Runnable() 
                    @Override
                    public void run() 
                        TextView textView = (TextView)viewHolder.layout.findViewById(R.id.textView11);
                        textView.setText("din1");
                        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);

    //or
                        TextView textView2 = (TextView)viewHolder.layout.findViewById(R.id.textView22);
                        textView2.setText("din2");
                        textView2.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);
                        int height_in_pixels2 = textView2.getLineCount() * textView2.getLineHeight(); //approx height text
                        textView2.setHeight(height_in_pixels2);

                    
                );

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                xmlns:autofit="http://schemas.android.com/apk/res-auto"
                android:layout_
                android:layout_
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".ExampleActivity">




    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_
        android:layout_
        android:background="@android:drawable/dialog_holo_light_frame"
        android:id="@+id/card_1"
        android:layout_marginTop="6dp"
        android:layout_marginBottom="60dp"
        android:layout_marginLeft="6dp"
        android:layout_marginRight="6dp"
        android:padding="20dp">

        <LinearLayout
            android:orientation="vertical"
            android:layout_
            android:layout_
            android:weightSum="1"
            android:gravity="top">

            <LinearLayout
                android:orientation="vertical"
                android:layout_
                android:layout_
                android:foregroundGravity="left"
                android:gravity="left"
                android:layout_gravity="left">

                <ImageView
                    android:layout_
                    android:layout_
                    android:id="@+id/imageViewLogoUrl_1"
                    android:foregroundGravity="left"
                    android:scaleType="fitStart"
                    />
            </LinearLayout>

            <android.support.percent.PercentFrameLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_
                android:layout_
                android:gravity="center"
                android:orientation="vertical"
                >
            <LinearLayout
                app:layout_heightPercent="65%"
                android:id="@+id/main_telephone_1"
                android:orientation="horizontal"
                android:layout_
                android:layout_
                android:background="#5191bb">

                <LinearLayout
                    android:id="@+id/telephone_1"
                    android:orientation="vertical"
                    android:layout_
                    android:layout_
                    android:layout_weight="0.8"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="5dp">

                    <TextView
                        android:layout_
                        android:layout_
                        android:text="Hello"
                        android:id="@+id/textView11"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:text="Hello"
                        android:id="@+id/textView22"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="vertical"
                    android:layout_
                    android:layout_
                    android:layout_weight="0.1">

                    <TextView
                        android:id="@+id/textViewCompanyName_1"
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textSize="24sp"
                        android:text="Organization"
                        android:singleLine="true"
                        android:layout_marginBottom="-4dp"/>

                    <TextView
                        android:id="@+id/textViewFullName_1"
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textSize="20sp"
                        android:text="Full Name User"
                        android:singleLine="true"
                        android:layout_marginBottom="-4dp"/>

                    <TextView
                        android:id="@+id/textViewJobTitle_1"
                        android:layout_
                        android:layout_
                        android:textSize="20sp"
                        android:text="Job Title"
                        android:gravity="right"
                        android:singleLine="true"
                        android:layout_marginBottom="-4dp"/>

                    <TextView
                        android:id="@+id/textViewDepartment_1"
                        android:layout_
                        android:layout_
                        android:textSize="20sp"
                        android:text="Department"
                        android:gravity="right"
                        android:singleLine="true"
                        android:layout_marginBottom="-4dp"/>
                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                android:layout_alignParentBottom="true"
                app:layout_marginTopPercent="65%"
                android:id="@+id/information_1"
                android:orientation="vertical"
                android:layout_
                android:layout_
                android:background="#cc6b6b">

                <TextView
                    android:layout_
                    android:layout_
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="Small Text"
                    android:id="@+id/textView2"/>
            </LinearLayout>
        </android.support.percent.PercentFrameLayout>

        </LinearLayout>

    </LinearLayout>



</RelativeLayout>

【问题讨论】:

不得不尝试移除布局权重 【参考方案1】:

这适用于我的项目

 textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textView.getTextSize() + 3.0f);

并享受编码......

要更改高度或宽度,请使用此 ....

  LinearLayout.LayoutParams linearPrams = new   LinearLayout.LayoutParams(LayoutParam.WRAP_CONTENT,LayoutParam.WRAP_CONTENT);

    textView.setLayoutParams(linearPrams);

PercentFrameLayout 所有的线性布局都应该是百分比的方式......

<android.support.percent.PercentFrameLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:layout_
         android:layout_>
     <LinearLayout
         app:layout_widthPercent="50%"
         app:layout_heightPercent="50%"
         app:layout_marginTopPercent="25%"
         app:layout_marginLeftPercent="25%"/>
 </android.support.percent.PercentFrameLayout/>

【讨论】:

嗨 Kumar,对不起,但它不起作用 :( 字体增加了。但 tekstView 不会改变 然后从你的 xml 中删除“android:layout_weight” 它不会在没有android:layout_weight 的情况下编译为layouttextViewlinearPrams 没有帮助。但这是个好主意。 只需将 放置在线性布局具有水平方向的位置,将 放置在线性布局具有垂直方向的位置。 并在“PercentFrameLayout”内使用所有线性布局,仅宽度、高度、边距以 % 格式。我在我的答案中加入格式。请看一下。

以上是关于无法更改 TextView 的大小的主要内容,如果未能解决你的问题,请参考以下文章

我有一个始终以固定大小显示的 TextView

从菜单选项如何更改 TextView 颜色和大小

方向更改会增加TextView的文本大小

调整大小后 TextView 无法正确换行

无法在TextView android中更改颜色

TextView 中的字体大小