android - একটি পাঠ্যসূচি প্রোগ্রাম্যাটিকভাবে লেআউট ওজন সেট করুন




layout textview (8)

আগের উত্তরগুলিতে ওজন একটি নতুন SomeLayoutType.LayoutParamams অবজেক্টের কন্সট্রকটারে প্রেরিত হয়। এখনও বেশিরভাগ ক্ষেত্রে বিদ্যমান বস্তুগুলি ব্যবহার করা আরও সুবিধাজনক - এটি এমন প্যারামিটারগুলির সাথে আচরণ করতে বাধা দেয় যা আমরা আগ্রহী নই।

একটি উদাহরণ:

// Get our View (TextView or anything) object:
View v = findViewById(R.id.our_view); 

// Get params:
LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams();

// Set only target params:
loparams.height = 0;
loparams.weight = 1;
v.setLayoutParams(loparams);

আমি TableRow বস্তুগুলি তৈরি করার চেষ্টা করছি এবং তাদের একটি TableLayoutTableRow বস্তুর 2 টি আইটেম, একটি CheckBox এবং একটি CheckBoxCheckBox আইটেমগুলিকে ডানদিকে CheckBox আইটেমগুলিকে ধাক্কা দেওয়ার জন্য তাদের লেআউট ওজন 1 সেট করতে হবে।

কোনও TextView আইটেমের লেআউট ওজন প্রোগ্রাম করার পদ্ধতিতে আমি ডকুমেন্টেশন খুঁজে পাচ্ছি না।


আপনি TableLayout.LayoutParams ব্যবহার করতে হবে। TableLayout.LayoutParams এরকম কিছু দিয়ে:

TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));

শেষ পরামিতি ওজন হয়।


আমার কাছে খুব অনুরূপ সমাধানটির সাথে একটি মোটামুটি অসুবিধা ছিল: টেবিলরোতে দুটি বোতাম ব্যবহার করার চেষ্টা করা হয়েছিল, প্রতিটিটির অর্ধেক স্ক্রীন প্রস্থ ছিল। যাই হোক না কেন, বাম বোতাম প্রস্থের প্রায় 70%, এবং ডান বাটন 30% হবে। কল টেবিল_layout.setStretchAllColumns (সত্য) এর কোন প্রভাব ছিল না বা বোতামের প্রস্থটিকে পর্দা পর্যন্ত অর্ধেক সেট করা হয়নি এবং তাদের লেআউট ওজন সেট করাও ছিল না।

আমি যে সমাধানটি শেষ করেছি তার সাথে টেবিলরুয়ে একটি লিনিয়ার এলয়েট নেস্টিং করা হয়েছিল, যা বাটনের প্রস্থের মান বিবেচনা করেছিল।

    TableLayout layout = new TableLayout(this);
    TableRow top_row = new TableRow(this);
    left_button = styleButton();
    right_button = styleButton();
    LinearLayout toprow_layout = new LinearLayout (this);
    toprow_layout.setOrientation(LinearLayout.HORIZONTAL);
    toprow_layout.addView (left_button);
    toprow_layout.addView(right_button);
    toprow.addView(top_layout);
    layout.addView(top_row)

    private Button styleButton() {
            Button btn = new Button (this);
            android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();      
            btn.setWidth((int)(display.getWidth()/2));    // set width to half
            btn.setHeight(((int)display.getHeight()/6));  // set height to whatevs
            btn.setText("foo");
            return btn;
        }

আমার জন্য এই কাজ, এবং আমি আশা করি এটি আপনার জন্য কাজ করবে

প্রথমে প্যারেন্ট ভিউয়ের জন্য লেআউটপ্যাম সেট করুন:

myTableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT,
                TableLayout.LayoutParams.FILL_PARENT));

তারপর TextView (সন্তানের) জন্য সেট করুন:

 TableLayout.LayoutParams textViewParam = new TableLayout.LayoutParams
     (TableLayout.LayoutParams.WRAP_CONTENT,
     TableLayout.LayoutParams.WRAP_CONTENT,1f);
     //-- set components margins
     textViewParam.setMargins(5, 0, 5,0);
     myTextView.setLayoutParams(textViewParam); 

এই আপনার কাজ করা উচিত

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT LayoutParams.MATCH_PARENT);

param.weight=1.0f;

এটি করার আরেকটি উপায় আছে। যদি আপনার কেবলমাত্র একটি প্যারামিটার সেট করতে হয়, উদাহরণস্বরূপ 'উচ্চতা':

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);

TextView text = new TextView(v.getContext());
text.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
                                                LayoutParams.WRAP_CONTENT, 1f));

(বা)

TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);

1f ওজন হিসাবে = 1 প্রদান করা হয়; আপনার প্রয়োজন অনুযায়ী আপনি 2f বা 3f দিতে পারেন, মতামত স্থান অ্যাক্সোডিং সরানো হবে। লিনিয়ার লেআউটের মতামতগুলির মধ্যে নির্দিষ্ট দূরত্ব তৈরি করার জন্য "লিনিয়ার এলআউট " এর জন্য ওয়েটাইটাম ব্যবহার করুন।

LinearLayout ll_Outer= (LinearLayout ) view.findViewById(R.id.linearview);
LinearLayout llInner = new LinearLayout(this);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            llInner.Orientation = Orientation.Horizontal;
            llInner.WeightSum = 2;
            ll_Outer.AddView(llInner);

TextView txtview = new TextView(v.getContext());
LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
txtview.setLayoutParams(params);

1f ওজন = 1 হিসাবে উল্লেখ করা হয়; আপনি 2f বা 3f দিতে পারেন, মতামত স্থান অ্যাক্সোডিং সরানো হবে







android-layout-weight