আমি যে অ্যাপ্লিকেশনটিতে কাজ করছি তাতে আমার গতিশীলভাবে লিনিয়ারলআউট তৈরি করতে হবে। এই ক্ষেত্রে কমান্ড
ll.setClickable(true);
করার মতো কাজ করছে না। যদিও আমি কিছু মিস করতে পারি, তবে একই ফলাফলটি পেতে আমি সেটঅন্টিচলিস্টনারকে কাজে লাগাতে সক্ষম হয়েছি এবং কারও যদি প্রয়োজন হয় তবে আমি কোডটি জমা দিই।
নিম্নলিখিত কোডটি দুটি পাঠ্যদর্শন এবং বৃত্তাকার কোণার সাথে একটি লিনিয়ারলআউট তৈরি করে, চাপলে রঙ পরিবর্তন করে।
প্রথমত, অঙ্কনযোগ্য ফোল্ডারে দুটি এক্সএমএল ফাইল তৈরি করুন, একটি স্বাভাবিকের জন্য এবং একটি চাপিত লিনিয়ারলআউট স্টেটের জন্য।
সাধারণ রাষ্ট্রের এক্সএমএল (অঙ্কনযোগ্য / বৃত্তাকার_আজাগুলি_ সাধারণ.এক্সএমএল)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:radius="7dp" />
<padding android:left="5dip" android:top="5dip" android:right="5dip" android:bottom="5dip" />
</shape>
</item>
<item android:bottom="3px">
<shape android:shape="rectangle">
<solid android:color="#F1F1F1" />
<corners android:radius="7dp" />
</shape>
</item>
</layer-list>
চাপা স্থিতির এক্সএমএল (অঙ্কনযোগ্য / গোলকৃত_আজাগুলি_প্রেস.এক্সএমএল)। পার্থক্য কেবল রঙে ...
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:radius="7dp" />
<padding android:left="5dip" android:top="5dip" android:right="5dip" android:bottom="5dip" />
</shape>
</item>
<item android:bottom="3px">
<shape android:shape="rectangle">
<solid android:color="#add8e6" />
<corners android:radius="7dp" />
</shape>
</item>
</layer-list>
তারপরে নিম্নলিখিত কোডটি কাজ করে
গ্লোবাল ভেরিয়েবল:
public int layoutpressed = -1;
ইন onCreate()
:
TextView tv1 = new TextView(this);
TextView tv2 = new TextView(this);
tv1.setText("First Line");
tv2.setText("Second Line");
final LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
ll.setBackgroundResource(R.drawable.rounded_edges_normal);
ll.addView(tv1);
ll.addView(tv2);
ll.setPadding(10, 10, 10, 10);
ll.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction()==MotionEvent.ACTION_DOWN){
ll.setBackgroundResource(R.drawable.rounded_edges_pressed);
ll.setPadding(10, 10, 10, 10);
layoutpressed = arg0.getId();
}
else if (arg1.getAction()== MotionEvent.ACTION_UP){
ll.setBackgroundResource(R.drawable.rounded_edges_normal);
ll.setPadding(10, 10, 10, 10);
if(layoutpressed == arg0.getId()){
}
}
else{
ll.setBackgroundResource(R.drawable.rounded_edges_showtmimata);
ll.setPadding(10, 10, 10, 10);
layoutpressed = -1;
}
return true;
}
});