मैं कैसे समायोजित TableRow सेल चौड़ाई के भीतर एक TableLayout programmaticallly?

0

सवाल

समस्या: जब मैं एक फ़ाइल का चयन के साथ एक लंबा रास्ता या नाम है, यह बलों आसन्न स्तंभों के लिए गायब हो जाते हैं ।

लेआउट एक्सएमएल सिर्फ पदों TableLayout के रूप में एक प्लेसहोल्डर में Activity और जावा कोड प्रयोग किया जाता है बनाने के लिए `TableRows और दर्शनों की संख्या के रूप में आवश्यक है.

क्या मैं कोशिश कर रहा हूँ करने के लिए: एक उपयोगकर्ता कर सकते हैं पर क्लिक करें "जोड़ें" बटन का चयन करने के लिए एक फ़ाइल पर अपने फोन करने के लिए जोड़ा जा सकता है के रूप में एक पथ और फ़ाइल नाम के लिए एक TableRow के भीतर एक TableLayout. पहले कॉलम में एक बटन ( - ) के लिए वैकल्पिक रूप से हटाने नव जोड़ा गया TableRow, और दूसरे स्तंभ में शामिल पथ और फ़ाइल नाम.

क्या मैं करने की कोशिश की है: मुझे लगता है कि मैं सब कुछ कोशिश की है प्रोग्राम के लिए विभिन्न समायोजन LayoutParams और या तो Button या TextView चौड़ाई और ऊँचाई पैरामीटर सेट करने के लिए एक निश्चित चौड़ाई... कम से कम के लिए बटन. लेकिन कुछ भी नहीं काम करने लगता है. जब मैं यहाँ खोज के लिए एक प्रोग्रामिंग उदाहरण के लिए, यह हमेशा लेआउट एक्सएमएल कोड, नहीं जावा.

मैं अभी भी कर रहा हूँ की तरह सीखने एंड्रॉयड लेकिन मैं फँस गया हूँ और इस पर किसी के बारे में सोचा में सक्षम हो सकता है बात करने के लिए मुझे सही दिशा में. नीचे कुछ तस्वीरें हैं और कोड है कि बनाता है TableRows और विचारों के भीतर. की तरह लग रहा है बेवकूफ मैं यह समझ नहीं सकते.

जोड़ने से पहले

before adding

जोड़ने के बाद

after adding

कोड के तरीकों के भीतर एक सिंगलटन वर्ग है कि बनाने के 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

बाद में मैंने सीखा है का उपयोग करने के लिए शब्द "गतिशील" के बजाय "कार्यक्रम", मैं करने में सक्षम था कुछ खोजने में मदद, और एक परिणाम के रूप में, हल मेरा मुद्दा है । निम्नलिखित लिंक के लिए आधार प्रदान की मुझे अनुमान करने के लिए एक समाधान मेरी समस्या. नीचे दिए गए लिंक मेरे समाधान है इस सवाल के जवाब में.

प्रेरित स्रोत: http://mangoprojects.info/android-2/creating-a-tablelayout-dynamically-in-android/

समाधान: मैं असफल रहा लागू करने के लिए LayoutParams पर घोषणा की TableRow. एक बार मैं इन मानकों के साथ, मैं का उपयोग कर सकता है TableRow.LayoutParams मदद करने के लिए परिभाषित करने और अलग-अलग नियंत्रण Button और TextViews का उपयोग कर .weight और .height मानकों में विशेष रूप से मामला है । देखें अद्यतन कोड और तस्वीर का परिणाम है ।

दृश्य परिणाम के लिए कोड अद्यतन

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ý
..................................................................................................................