在android中自定义表格布局

Posted

技术标签:

【中文标题】在android中自定义表格布局【英文标题】:Customizing Table Layout in android 【发布时间】:2019-07-22 04:13:26 【问题描述】:

我得到的布局

public class MainActivity extends AppCompatActivity 

    TableLayout tableLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tableLayout = findViewById(R.id.tableLayout);

        try

            JSONObject jsonObject = new JSONObject(loadJson());
            JSONObject jsonObject1 = jsonObject.getJSONObject("data");
            JSONArray jsonArray = jsonObject1.getJSONArray("application_step");

            JSONArray sections = jsonArray.getJSONObject(0).getJSONArray("section");
            for(int i = 0;i<sections.length();i++)
            
                TableRow tr = new TableRow(this);
                JSONArray fields = sections.getJSONObject(i).getJSONArray("fields");
                for(int j = 0;j<fields.length();j++)
                
                    Button button = new Button(this);
                    button.setText("Button"+j);
                    tr.addView(button);
                
                tr.setFitsSystemWindows(true);
                //tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.FILL_PARENT));
                tableLayout.addView(tr);
            

        
        catch (Exception e)

            Log.d("ErrorTest ",e.getMessage());
        

    

    public String loadJson()

        String json=null;

        try
            InputStream io = MainActivity.this.getAssets().open("BaseUrlJson.json");
            int size = io.available();
            byte buffer[] = new byte[size];
            io.read(buffer);
            io.close();
            json = new String(buffer,"UTF-8");
        
        catch (Exception e)
            Log.d("Error: ",e.getMessage());
            return null;
        

        return json;
    

上面的代码让我从 JSON 配置文件中获取布局。

我希望通过扩展较短行中的单元格(按列)来使所有行的长度相同。

我是动态生成的。

【问题讨论】:

这听起来像一个网格。为什么不使用RecyclerViewGridLayoutManager 不幸的是,我只能使用表格布局来实现它。 【参考方案1】:

我认为你应该从这里检查这种适应性强的布局。

https://github.com/Cleveroad/AdaptiveTableLayout

【讨论】:

以上是关于在android中自定义表格布局的主要内容,如果未能解决你的问题,请参考以下文章

故事板中的自定义表格视图单元格布局似乎无效

在情节提要中自定义表格视图单元格时出现 NSInternalInconsistencyException

如何固定表格视图中自定义单元格文本字段的标签值?

R Shiny DT::renderDataTable ...如何在下载的表格中自定义标题

即使在 Xcode 10.1 中自定义后,表格视图仍然显示基本

iOS,标题中自定义单元格的边距与行不同,自动布局?