ยังไงฉันปรับ TableRow มือถือ widths ภายใน TableLayout programmaticallly?

0

คำถาม

ปัญหา: ตอนที่ฉันเลือกแฟ้มบนพาธหรือชื่อของมันกำลังใกล้ชิดความสดมภ์ที่หายตัวไป

ที่ผังแป้นพิมพ์ name=แอพพลิเคชันแค่ตำแหน่ง TableLayout เป็นคราวที่เยี่ยมที่ Activity และรหัสของจาวาจะใช้ในการสร้าง`TableRows แล้วมุมมองที่จำเป็นหรอก

สิ่งที่ฉันกำลังพยายามจัสติสลีกออฟอเมริกา เป็นของผู้ใช้สามารถคลิกที่ปุ่มเป็น"เพิ่ม"ปุ่มเพื่อเลือกแฟ้มบนโทรศัพท์จะถูกเพิ่มเข้าเป็นเส้นทางและชื่อแฟ้มจะเป็น TableRow ภายใน TableLayout. คนแรกคอลัมน์มีปุ่ม(-)เพื่อ optionally ลบคนที่เพิ่งถูกเพิ่มเข้า TableRow,และคนที่สองคอลัมน์บรรจุพาธและชื่อแฟ้ม.

สิ่งที่ฉันต้องพยายาม: ฉันรู้สึกว่าฉันพยายามทุกอย่าง programmatically ปรับตัวต่างๆ LayoutParams ก็แล้วแต่ Button หรือ TextView ความกว้างและความสูงของพารามิเตอร์จะตั้งค่าความกว้างคงที่...อย่างน้อยก็สำหรับปุ่ม แต่ไม่มีอะไรเหมือนไปทำงานแล้ว ตอนที่ฉันค้นหาที่นี่เพื่อตั้งโปรแกรมตัวอย่างเช่น,มันคือเสมองผังแป้นพิมพ์ name=แอพพลิเคชันรหัสไม่ใช่คนของจาวา.

ฉันยังคงเป็นการเรียนรู้ที่ Android แต่ฉันต้องมาติดอยู่ที่นี่และคิดว่าใครบางคนอาจจะสามารถประเด็นฉันในทิศทางที่ถูกต้อง ด้านล่างบางอย่างรูปภาพและรหัสโปรแกรมและสร้างค TableRows แล้วมุมมองภายในเจ้ากำลังจะบอกอะไร? รู้สึกโง่ฉันไม่สามารถหาคำตอบของเรื่องนี้

ก่อนที่การเพิ่ม

before adding

หลังจากเพิ่ม

after adding

รหัส วิธีการของภายใน singleton เรียนที่สร้าง Button แล้ว TextView มุมมองไปที่ TableRow แล้ว TableLayout. คนแรกวิธีการโทรศัพท์อีกสองซึ่งสร้างปุ่มโฆษณา TextView

public static TableRow setupFilesTableRow(Context context, TableLayout table, String fileID, String fileName, boolean header) {
        TableRow row = new TableRow(context);
        if(header) {
            row.addView(setupFilesAddRowButton(context, table));
            row.addView(addRowTextViewToTable(context, fileName, true));
        }else{
            row.addView(setupDeleteRowButton(context, table));

            for(int r=1; r < 2; r++){
                
                row.addView(addRowTextViewToTable(context, fileName, false));
                row.setClickable(true);
            }
        }
        return row;
    }

public static Button setupDeleteRowButton(Context context, TableLayout table){
        Button btnDelete = new Button(context);
        TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.MATCH_PARENT);
        trLayoutParams.setMargins(3,3,3,3);
        btnDelete.setBackgroundColor(Color.WHITE);
        btnDelete.setLayoutParams(trLayoutParams);
        btnDelete.setText("-");
        btnDelete.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
        btnDelete.setGravity(Gravity.CENTER);
        btnDelete.setPadding(5,5,5,5);
        btnDelete.setOnClickListener(v -> {
            deleteTableRows(table);
        });
        return btnDelete;
    }

public static TextView addRowTextViewToTable(Context context, String value, boolean bold){

        TextView tv;
        tv = new TextView(context);
        TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams();

        trLayoutParams.setMargins(3,3,3,3);
        tv.setText(String.valueOf(value));
        if(bold) tv.setTypeface(null, Typeface.BOLD);
        tv.setLayoutParams(trLayoutParams);
        tv.setTextSize(12);
        tv.setGravity(Gravity.CENTER);
        tv.setPadding(8,8,8,8);
        tv.setBackgroundColor(Color.WHITE);

        return tv;
    }
android android-tablelayout tablerow
2021-11-17 20:22:02
1

คำตอบที่ดีที่สุด

0

หลังจากที่ฉันได้เรียนรู้ที่จะใช้คำว่า"ปรับอัตโนมัติ"แทนคำว่า"programmatic"ฉันสามารถหาความช่วยเหลือย่างสุภาพและผลของมันคือ,รับการแก้ปัญหาของฉันเหมือนไม่มีปัญหาอยู่เลยสินะ ความเชื่อมโยงให้พื้นที่ฉันจะ infer ทางออกของฉันเหมือนไม่มีปัญหาอยู่เลยสินะ ด้านล่างการเชื่อมต่อกับวิธีแก้ปัญหาของฉันในกองตอบคำถามคำถามข้อนี้

แรงบันดาลใจแหล่ง: http://mangoprojects.info/android-2/creating-a-tablelayout-dynamically-in-android/

ทางออก: ฉันล้มเหลวในการปรับใช้ LayoutParams ตอนการประกาศของ TableRow. ครั้งนึงฉันเพิ่มพวกนี้พารามิเตอร์,ฉันควรใช้ TableRow.LayoutParams เพื่อช่วยกำหนดและควบคุมบุคคลหนึ่ง Button แล้ว TextViews ใช้ .weight แล้ว .height พารามิเตอร์อยู่ในของฉันโดยเฉพาะกรณีนี้ เห็นรปรับปรุงรหัสและ pic ของผลลัพธ์เดียวกันนั่นแหละ

มองเห็นผลลัพธ์ของรหัสปรับปรุง

Result

รหัสปรับปรุงยา setupFilesTableRow

    TableRow row = new TableRow(context);
    LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
    row.setLayoutParams(ll);

รหัสปรับปรุงยา setupDeleteRowButton (เพิ่มน้ำหนักและความสูงของช่วย)

    Button btnDelete = new Button(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 1;
    trLayoutParams.height =75;
    btnDelete.setLayoutParams(trLayoutParams);

รหัสปรับปรุงยา addRowTextViewToTable*

    TextView tv;
    tv = new TextView(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 5;
    tv.setLayoutParams(trLayoutParams);
2021-11-18 20:41:45

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................