【问题标题】:How to fix the size of cells in a tablelayout in android如何在android中的tablelayout中修复单元格的大小
【发布时间】:2012-07-18 17:55:18
【问题描述】:

如何在 android 的表格布局中修复(防止它们移动)单元格的大小?

我有一个表格布局,每个单元格内都有图像按钮,问题是,当我更改(或删除)图像时,按钮的大小会发生变化。如何防止这种情况发生?

【问题讨论】:

    标签: android tablelayout imagebutton


    【解决方案1】:

    您可以使用属性 setMinimum Width/height 和 Maximum width/height 来避免这种情况

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="100dp"
        android:maxWidth="200dp"
        android:minHeight="100dp"
        android:maxHeight="200dp"
        android:src="@drawable/ic_launcher" />
    

    这肯定会帮助您完成工作。

    谢谢

    这可以帮助您以编程方式调整 ImageButton,同时检测不同的屏幕尺寸(小、中、大、超大)

    //Determine screen size
        if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {     
            Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
    
        }
        else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {     
            Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_LONG).show();
    
        } 
        else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {     
            Toast.makeText(this, "Small sized screen" , Toast.LENGTH_LONG).show();
        }
        else {
            Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
        }
    
    
    
    
        //Determine density
        DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            int density = metrics.densityDpi;
    
            if (density==DisplayMetrics.DENSITY_HIGH) {
                Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
            }
            else if (density==DisplayMetrics.DENSITY_MEDIUM) {
                Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
            }
            else if (density==DisplayMetrics.DENSITY_LOW) {
                Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
            }
            else {
                Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW.  Density is " + String.valueOf(density),  Toast.LENGTH_LONG).show();
            }
    

    【讨论】:

    • 我宁愿避免使用数字,因为这样就很难支持不同的屏幕尺寸
    • 我已经编辑了我的代码以提供不同屏幕分辨率的解决方案,这肯定会对你有所帮助。谢谢
    • 确实如此,我只需要等待 10 分钟才能接受答案
    【解决方案2】:

    将每个 View 的 layout_width 设置为 0。 在每个视图中添加 layout_weight,根据您的需要添加

    参考:http://pournaras.zilsen.com/2010/11/01/fixed-column-width-in-tablelayout/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多