文本视图之外的文本

时间:2018-03-09 16:51:15

标签: android android-layout android-fragments android-tablelayout android-studio-3.0

我目前遇到Android应用程序问题。我正在使用包含一些视图的表格布局。问题是public void processElement(ProcessContext c) { // c.element() returns a BeamRecord c.output(c.element().getString("fieldName")); } 似乎没有正确包装文本。但是,当我更改片段之间的滑动时,它只会调整大小,并且符合它的预期。

这是调用TextView函数时首先看起来的样子。

enter image description here

这就是我在片段之间滑动的样子。

enter image description here

这是我用来在表格中设置视图的方法。

onCreate

这是我的onCreate

 private void initializeBookTable(final List<Book> bookList, View view, final Button modifyBtn, final Button deleteBtn)
{
    //Get screen width
    DisplayMetrics displaymetrics = new DisplayMetrics();
    ((Activity)getContext()).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int screenWidth = displaymetrics.widthPixels;
    TableLayout table =  view.findViewById(R.id.book_tableLayout);
    //Border for the text views
    final GradientDrawable gd = new GradientDrawable();
    gd.setColor(getResources().getColor(R.color.colorTeal));
    gd.setCornerRadius(2);
    gd.setStroke(2, 0xFF000000);
    //Font for the text views
    Typeface font = Typeface.create("casual",Typeface.BOLD);
    //Header row
    TableRow headerRow = new TableRow(this.getContext());
    TableLayout.LayoutParams headerRowParams = new TableLayout.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);
    headerRowParams.setMargins(0,1,0,0);
    headerRow.setLayoutParams(headerRowParams);
    //Header name text view
    TextView headerName = new TextView(this.getContext());
    headerName.setText(getResources().getString(R.string.book_NAME));
    headerName.setBackground(gd);
    headerName.setPadding(20,0,20,0);
    headerName.setTypeface(font);
    headerName.setTextColor(Color.BLACK);
    headerName.setMinWidth(screenWidth/4);
    headerRow.addView(headerName);
    //Header chapter text view
    TextView headerChapter = new TextView(this.getContext());
    headerChapter.setText(getResources().getString(R.string.book_CHAPTER));
    headerChapter.setBackground(gd);
    headerChapter.setPadding(20,0,20,0);
    headerChapter.setTypeface(font);
    headerChapter.setTextColor(Color.BLACK);
    headerChapter.setMinWidth(screenWidth/4);
    headerRow.addView(headerChapter);
    //Header page text view
    TextView headerPage = new TextView(this.getContext());
    headerPage.setText(getResources().getString(R.string.book_PAGE));
    headerPage.setBackground(gd);
    headerPage.setPadding(20,0,20,0);
    headerPage.setTypeface(font);
    headerPage.setTextColor(Color.BLACK);
    headerPage.setMinWidth(screenWidth/4);
    headerRow.addView(headerPage);
    //Header name text view
    TextView headerStatus = new TextView(this.getContext());
    headerStatus.setText(getResources().getString(R.string.book_STATUS));
    headerStatus.setBackground(gd);
    headerStatus.setPadding(20,0,20,0);
    headerStatus.setTypeface(font);
    headerStatus.setTextColor(Color.BLACK);
    headerStatus.setMinWidth(screenWidth/4);
    headerRow.addView(headerStatus);
    //Add row to table
    table.addView(headerRow);
    for(int i = 0; i < bookList.size(); i++)
    {
        TableRow row = new TableRow(this.getContext());
        //Set text views parameters
        TableRow.LayoutParams textViewParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
        textViewParams.setMargins(0,1,0,1);
        row.setLayoutParams(textViewParams);
        //Set text views parameters
        TextView name = new TextView(this.getContext());
        name.setText(bookList.get(i).getName());
        name.setBackground(gd);
        name.setPadding(20,0,20,0);
        name.setLayoutParams(textViewParams);
        TextView chapter = new TextView(this.getContext());
        chapter.setText(bookList.get(i).getChapter());
        chapter.setBackground(gd);
        chapter.setPadding(20,0,20,0);
        chapter.setLayoutParams(textViewParams);
        TextView page = new TextView(this.getContext());
        page.setText(bookList.get(i).getPage());
        page.setBackground(gd);
        page.setPadding(20,0,20,0);
        page.setLayoutParams(textViewParams);
        TextView status = new TextView(this.getContext());
        status.setText(bookList.get(i).getStatus());
        status.setBackground(gd);
        status.setPadding(20,0,20,0);
        status.setLayoutParams(textViewParams);
        //Add text views to the row
        row.addView(name);
        row.addView(chapter);
        row.addView(page);
        row.addView(status);
        row.setClickable(true);
        //Click listener for each row
        row.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TableRow tableRow = (TableRow) view;
                selectedRow = tableRow;
                //If the row is already selected (in red) deselect it
                TextView textViewCheck = (TextView) tableRow.getChildAt(0);
                if(selection && textViewCheck.getText().toString().equals(selectedBook.getName()))
                {
                    for(int i = 0; i < 4; i++)
                    {
                        TextView textView = (TextView) tableRow.getChildAt(i);
                        textView.setBackground(gd);
                    }
                    //Disable add and modify buttons when row is deselected
                    modifyBtn.setEnabled(false);
                    deleteBtn.setEnabled(false);
                    selection = false;
                    selectedBook = null;
                }
                //If the row is not in red check if there is already a selected row
                else
                {
                    if(selection)
                    {
                        String message = "Please select only one";
                        Toast.makeText(getContext(), message, LENGTH_SHORT).show();
                    }
                    else
                    {
                        for(int i = 0; i < 4; i++)
                        {
                            TextView textView = (TextView) tableRow.getChildAt(i);
                            textView.setBackgroundColor(Color.RED);
                        }
                        //Enable add and modify buttons when row is selected
                        modifyBtn.setEnabled(true);
                        deleteBtn.setEnabled(true);
                        TextView nameView = (TextView) tableRow.getChildAt(0);
                        selectedBook = storage.findBook(nameView.getText().toString());
                        selection = true;
                    }
                }
            }
        });
        //Set row parameters
        TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);
        tableRowParams.setMargins(0,1,0,1);
        row.setLayoutParams(tableRowParams);
        table.addView(row);
    }
}

对于onResume我有默认值。 另一件事情是,如果我只是用渐变可绘制的gd设置名称的背景(第一列)然后它可以工作但是如果我设置其余列的其余背景那么我有我的问题已经解释过了。

1 个答案:

答案 0 :(得分:0)

So apparently I have managed to solve the issue by using a gradient drawable for the name and a different gradient drawable for the other properties.