【问题标题】:Change The Textview Size Runtime in listview在列表视图中更改 Textview 大小运行时
【发布时间】:2012-12-24 07:30:24
【问题描述】:

我想动态更改在 listview 中使用的 textview 大小运行时,但对 textview 没有任何影响我在获得屏幕宽度运行时后将屏幕宽度分成 6 部分后划分我从屏幕宽度分配 textview 大小但是此 textview 处于不同的布局中,因此如何在我的布局中采用此布局并更改 textview 运行时的大小

我把我的布局放在这里

Home.xml

<LinearLayout 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:orientation="vertical" >


    <LinearLayout 
                android:id="@+id/textlayout" 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:weightSum="12"
                android:layout_weight="1"
                android:gravity="center">

                <TextView
                    android:id="@+id/text1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:background="@drawable/flightlist"
                    android:text="Destination"
                    android:textSize="17dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/text2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="Flight"

                    android:textSize="17dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/text3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:background="@drawable/flightlist"
                    android:text="Airlines"
                    android:textSize="17dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/text4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"

                    android:gravity="center"
                    android:text="Schedule"
                    android:textSize="17dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/text5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="Term Gate"
                    android:textSize="17dp"
                    android:textStyle="bold"
                    android:background="@drawable/flightlist" />

                <TextView
                    android:id="@+id/text6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="Status"
                    android:textSize="17dp"
                    android:textStyle="bold" />

             </LinearLayout>

              <ListView
                    android:id="@+id/list"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="10"
             >
             </ListView>




</LinearLayout>

list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="6" 
    android:gravity="center">

    <TextView
        android:id="@+id/textdestination"
        android:layout_width="183dp"
        android:layout_height="fill_parent"
        android:text="Destination"
        android:textSize="15dp"
        android:gravity="center"

        />

    <TextView
        android:id="@+id/textflight"
        android:layout_width="105dp"
        android:layout_height="fill_parent"
        android:text="Flight"
        android:textSize="15dp"
        android:gravity="center"
        android:background="@drawable/flightlist"
         />

    <TextView
        android:id="@+id/textairline"
        android:layout_width="185dp"
        android:layout_height="fill_parent"
        android:text="Airlines"
        android:textSize="15dp" 
        android:gravity="center"/>

            <TextView
                android:id="@+id/textschedule"
                android:layout_width="73dp"
                android:layout_height="fill_parent"
                android:text="Schedule"
                android:textSize="15dp"
                android:gravity="center"
                android:background="@drawable/flightlist"
            />

            <TextView
                android:id="@+id/texttermgate"
                android:layout_width="105dp"
                android:layout_height="fill_parent"
                android:text="Term Gate"
                android:textSize="15dp"
                android:gravity="center"
                />


            <TextView
                android:id="@+id/textstatus"
                android:layout_width="73dp"
                android:layout_height="fill_parent"
                android:text="Status"
                android:textSize="15dp" 
                android:gravity="center"
                android:background="@drawable/flightlist"/>

</LinearLayout>

HomeActivity.java

View inflater=getLayoutInflater().inflate(R.layout.list2, list, false);
    TextView textdestination=(TextView)inflater.findViewById(R.id.textdestination);
    textdestination.setHeight(50);
    textdestination.setWidth((textlayoutwidth*25)/100);
    textdestination.setTextSize(100);

【问题讨论】:

    标签: android android-listview textview


    【解决方案1】:

    您可以在用于 ListView 的 AdaptergetView() 方法中执行此操作。

    mInflater = (LayoutInflater) mActivity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    public View getView(int position, View convertView, ViewGroup parent) {
    
        ViewHolder holder;
        if (convertView == null) {
    
            holder = new ViewHolder();
    
            convertView = mInflater.inflate(R.layout.list, parent,
                    false);
            holder.tv1 = (TextView) convertView
                    .findViewById(R.id.textdestination);
            holder.tv2 = (TextView) convertView
                    .findViewById(R.id.textflight);
            holder.tv3 = (TextView) convertView
                    .findViewById(R.id.textairline);
            .......
            .......
            .......
    
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
    
        if(someCondition){
    
        holder.tv1.setLayoutParams(new LinearLayout.LayoutParams(50,50));
        holder.tv2setLayoutParams(new LinearLayout.LayoutParams(50,50));
        holder.tv3.setLayoutParams(new LinearLayout.LayoutParams(50,50));
        .....
        .....
        .....
        }
    
        return convertView;
    }
    

    【讨论】:

    • 但是我使用这个代码所以如何用这个代码来做这个 ListAdapter 适配器 = new SimpleAdapter(HomeActivity.this, flightList, R.layout.listportrait, new String[] { TAG_MDESTINATION, TAG_MFLIGHT, TAG_MAIRLINE ,TAG_MSCHEDULE,TAG_MTERMINALGATE,TAG_MFSTATUS }, new int[] { R.id.textdestination, R.id.textflight, R.id.textairline,R.id.textschedule,R.id.texttermgate,R.id.textstatus }) ; setListAdapter(适配器);
    【解决方案2】:

    您可以在运行时更改 textview 的宽度和高度:

    textdestination.setWidth(pixels);
    textdestination.setHeight(pixels); 
    

    【讨论】:

    • 但是你可以看到这个 textdestination textview 在另一个布局中,所以我们如何访问那个布局和他们的视图
    • 也许你应该使用布局充气器
    • 此代码无效 查看 inflater=getLayoutInflater().inflate(R.layout.list2, null); TextView textdestination=(TextView)inflater.findViewById(R.id.textdestination); textdestination.setHeight(50); textdestination.setWidth((textlayoutwidth*25)/100);
    • @Mahesh 它对文本视图的大小没有任何影响
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多