0
xmlを使用して複合コントロールを作成し、他のxml レイアウトに配置して再利用できるようになりました。しかし、私はJavaコードを使用して実行時に追加したい。私は、次のコードを試してみましたが... 実行時に複合コントロールをレイアウトに追加するにはどうすればよいですか?
は、私は任意のヘルプや提案をいただければ幸いですので、Androidに新しい静かだ...COMPOUND唯一のTextViewが表示され、化合物-制御が示されていない - コントロールレイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_lines"
>
<TextView android:id="@+id/msg_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SAMPLE MESSAGE TITLE"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button android:id="@+id/btn_shw"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="SHOW MSG"
android:layout_weight="1"
/>
<Button android:id="@+id/btn_dis"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text=" DISABLE"
android:layout_weight="1"
/>
<Button android:id="@+id/btn_del"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text=" DELETE "
android:layout_weight="1"
/>
</LinearLayout>
</LinearLayout>
COMPOUND-CONTROLのCODE
public class RemainderControl extends LinearLayout
{
Button btn1,btn2,btn3;
TextView tv1;
public RemainderControl(Context context)
{
super(context);
LayoutInflater inflater=LayoutInflater.from(context);
inflater.inflate(R.layout.remainder_control,this);
loadviews();
}
public RemainderControl(Context context,AttributeSet attrs)
{
super(context,attrs);
LayoutInflater inflater=LayoutInflater.from(context);
inflater.inflate(R.layout.remainder_control,this);
loadviews();
}
private void loadviews()
{
btn1=(Button)findViewById(R.id.btn_shw);
btn2=(Button)findViewById(R.id.btn_dis);
btn3=(Button)findViewById(R.id.btn_del);
tv1=(TextView)findViewById(R.id.msg_title);
btn1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv1.setText("SHOW BUTTON PRESSED");
}
});
btn2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv1.setText("DISABLE BUTTON PRESSED");
}
});
btn3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv1.setText("DELETE BUTTON PRESSED");
}
});
tv1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv1.setText("");
}
});
}
}
CODEはあなたのコントロールがXMLに含まれている
public class RemainderList extends Activity
{
ScrollView sv1;
LinearLayout ll1;
deepak.android.remainder.RemainderControl rc1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int ht=LayoutParams.WRAP_CONTENT;
int wt=LayoutParams.FILL_PARENT;
sv1=new ScrollView(this);
ll1=new LinearLayout(this);
ll1.setOrientation(LinearLayout.VERTICAL);
sv1.addView(ll1);
TextView tv1=new TextView(this);
tv1.setText("THIS IS SAMPLE TEXT");
ll1.addView(tv1,new LinearLayout.LayoutParams(wt,ht));
rc1=new deepak.android.remainder.RemainderControl(this);
ll1.addView(rc1,new LinearLayout.LayoutParams(wt,ht));
setContentView(sv1);
}
}
「LayoutInflater ...」コードを別のメソッドに配置すると、「コンテキスト」がメソッド内で表示されないため、エラーが表示されます。だから私は両方のコンストラクタにコードを複製し、今は正常に動作します。しかし、私は何か間違っている。私はduplication.iでそれを動作させることができなければなりません。上記のコードを変更して、今すぐ動作させるようにしてください。 – Deepak
もちろん、複製なしでも可能です。コンテキストを 'init'メソッドのパラメータとして渡すだけです。 'private void init(コンテキストコンテキスト){//それを行う}'のようなものと 'init(context);'のようなコンストラクタで呼び出す – ernazm
私はそれをたくさんありがとう – Deepak