如何以编程方式添加片段的RelativeLayout片段、方式、RelativeLayout

由网友(眉间的寂寞)分享简介:我已经设计了一个RelativeLayout的。我试图片段添加到它。它重叠。什么我需要做的,这样它涉及以下任一其他。 FragmentTransaction T = getSupportFragmentManager()调用BeginTransaction();    FragmentTest myFragment...

我已经设计了一个RelativeLayout的。我试图片段添加到它。它重叠。什么我需要做的,这样它涉及以下任一其他。

  FragmentTransaction T = getSupportFragmentManager()调用BeginTransaction();    FragmentTest myFragment =新FragmentTest();    t.add(layout.getId(),myFragmentmyFirstFragment);    FragmentTest myFragment2 =新FragmentTest();    t.add(layout.getId(),myFragment2mySecondFragment);    t.commit(); 

myFragment和myFragment2的意见//重叠,即使我已经设置了方向垂直。

 < RelativeLayout的    机器人:ID =@ + ID / idll1    机器人:layout_width =FILL_PARENT    机器人:layout_height =50dp    机器人:layout_marginLeft =10SP    机器人:layout_marginRight =0SP    机器人:layout_marginTop =10SP    机器人:layout_weight =1    机器人:paddingBottom会=5DP    机器人:paddingLeft =10dp    机器人:paddingRight =5DP    机器人:paddingTop =5DP    机器人:方向=垂直/> 

解决方案 西门子PLC控制变频器,实现3段速控制的方法

我们可以按如下方式做到这一点:

Activity类中相对布局为present。让这种相对​​布局(mParentLayout)是活动的视图层次的根元素。和该片段被添加到相对布局将在按钮(mGridBtn)下方的位置被mGridFragment 的

 公共类DroidOpsActivity扩展FragmentActivity工具    OnClickListener {    私人的RelativeLayout mParentLayout = NULL;    私人按钮mGridBtn = NULL;    私人FragmentManager mFragmentMgr = NULL;    私人FragmentTransaction mF​​ragmentTransc = NULL;    私人片段mGridFragment = NULL;    @覆盖    保护无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);        初始化();    }    私人无效初始化(){        的setContentView(R.layout.activity_droid_ops);        mParentLayout =(RelativeLayout的)findViewById(R.id.parent_layout);        mGridBtn =(按钮)findViewById(R.id.grid_button);        mFragmentMgr = getSupportFragmentManager();        registerListener();    }    私人无效registerListener(){        mGridBtn.setOnClickListener(本);    }    @覆盖    公共无效的onClick(视图v){        开关(v.getId()){        案例R.id.grid_button:                    loadFragment();                    mGridBtn.setEnabled(假);        打破;        }    }    私人无效loadFragment(){        mGridFragment =新DroidOpsFragments();        mFragmentTransc = mFragmentMgr.beginTransaction();        mFragmentTransc.add(mParentLayout.getId(),mGridFragment);        mFragmentTransc.addToBackStack(NULL);        mFragmentTransc.commit();    }    公共RelativeLayout.LayoutParams fetchLayoutParams(){        RelativeLayout.LayoutParams PARAMS =新RelativeLayout.LayoutParams(                    LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);        //我们可以添加任何可用的规则的RelativeLayout,因此可以相应地定位        params.addRule(RelativeLayout.BELOW,mGridBtn.getId());        返回PARAMS;    }} 

相应片段类,这是在活动的布局定位与的

 公共类DroidOpsFragments扩展片段{    @覆盖    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,                    捆绑savedInstanceState){        查看查看= inflater.inflate(R.layout.view_word_grid,NULL);        //这里我们从父活动在获取的LayoutParams并将其设置为片段的视图。        view.setLayoutParams(((DroidOpsActivity)活性).fetchLayoutParams());        返回视图。    }} 

I have designed a RelativeLayout. I am trying to add fragment to it. It overlaps. What do I need to do so that it comes one below other.

    FragmentTransaction t = getSupportFragmentManager().beginTransaction();

    FragmentTest myFragment = new FragmentTest();
    t.add(layout.getId(), myFragment, "myFirstFragment");

    FragmentTest myFragment2 = new FragmentTest();
    t.add(layout.getId(), myFragment2, "mySecondFragment");

    t.commit();

//Views of myFragment and myFragment2 overlaps even though I have set the orientation to vertical.

<RelativeLayout
    android:id="@+id/idll1"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_marginLeft="10sp"
    android:layout_marginRight="0sp"
    android:layout_marginTop="10sp"
    android:layout_weight="1"
    android:paddingBottom="5dp"
    android:paddingLeft="10dp"
    android:paddingRight="5dp"
    android:paddingTop="5dp" 
    android:orientation="vertical"/>

解决方案

We can do it as follows :

Activity class in which relative layout is present. Let that relative layout (mParentLayout) be root element of activity's view hierarchy. And the fragment to be added to the relative layout will be mGridFragment at a position below the Button (mGridBtn).

public class DroidOpsActivity extends FragmentActivity implements
    OnClickListener {

    private RelativeLayout mParentLayout = null;
    private Button mGridBtn = null;
    private FragmentManager mFragmentMgr = null;
    private FragmentTransaction mFragmentTransc = null;
    private Fragment mGridFragment = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initialize();
    }

    private void initialize() {
        setContentView(R.layout.activity_droid_ops);
        mParentLayout = (RelativeLayout) findViewById(R.id.parent_layout);
        mGridBtn = (Button) findViewById(R.id.grid_button);
        mFragmentMgr = getSupportFragmentManager();
        registerListener();
    }

    private void registerListener() {
        mGridBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.grid_button:
                    loadFragment();
                    mGridBtn.setEnabled(false);
        break;
        }
    }

    private void loadFragment() {
        mGridFragment = new DroidOpsFragments();
        mFragmentTransc = mFragmentMgr.beginTransaction();
        mFragmentTransc.add(mParentLayout.getId(), mGridFragment);
        mFragmentTransc.addToBackStack(null);
        mFragmentTransc.commit();
    }

    public RelativeLayout.LayoutParams fetchLayoutParams() {
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

        // We can add any rule available for RelativeLayout and hence can position accordingly
        params.addRule(RelativeLayout.BELOW, mGridBtn.getId());
        return params;
    }
}

Corresponding Fragment class which is to be positioned with in the activity's layout.

public class DroidOpsFragments extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.view_word_grid, null);

        // Here we are fetching the layoutParams from parent activity and setting it to the fragment's view.

        view.setLayoutParams(((DroidOpsActivity) activity).fetchLayoutParams());
        return view;
    }

}

阅读全文

相关推荐

最新文章