समस्या: जब मैं एक फ़ाइल का चयन के साथ एक लंबा रास्ता या नाम है, यह बलों आसन्न स्तंभों के लिए गायब हो जाते हैं ।
लेआउट एक्सएमएल सिर्फ पदों TableLayout
के रूप में एक प्लेसहोल्डर में Activity
और जावा कोड प्रयोग किया जाता है बनाने के लिए `TableRows और दर्शनों की संख्या के रूप में आवश्यक है.
क्या मैं कोशिश कर रहा हूँ करने के लिए: एक उपयोगकर्ता कर सकते हैं पर क्लिक करें "जोड़ें" बटन का चयन करने के लिए एक फ़ाइल पर अपने फोन करने के लिए जोड़ा जा सकता है के रूप में एक पथ और फ़ाइल नाम के लिए एक TableRow
के भीतर एक TableLayout
. पहले कॉलम में एक बटन ( - ) के लिए वैकल्पिक रूप से हटाने नव जोड़ा गया TableRow, और दूसरे स्तंभ में शामिल पथ और फ़ाइल नाम.
क्या मैं करने की कोशिश की है: मुझे लगता है कि मैं सब कुछ कोशिश की है प्रोग्राम के लिए विभिन्न समायोजन LayoutParams
और या तो Button
या TextView
चौड़ाई और ऊँचाई पैरामीटर सेट करने के लिए एक निश्चित चौड़ाई... कम से कम के लिए बटन. लेकिन कुछ भी नहीं काम करने लगता है. जब मैं यहाँ खोज के लिए एक प्रोग्रामिंग उदाहरण के लिए, यह हमेशा लेआउट एक्सएमएल कोड, नहीं जावा.
मैं अभी भी कर रहा हूँ की तरह सीखने एंड्रॉयड लेकिन मैं फँस गया हूँ और इस पर किसी के बारे में सोचा में सक्षम हो सकता है बात करने के लिए मुझे सही दिशा में. नीचे कुछ तस्वीरें हैं और कोड है कि बनाता है TableRows और विचारों के भीतर. की तरह लग रहा है बेवकूफ मैं यह समझ नहीं सकते.
जोड़ने से पहले
जोड़ने के बाद
कोड के तरीकों के भीतर एक सिंगलटन वर्ग है कि बनाने के 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;
}