реализовать splitView программно в Android - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь создать splitView в Android программным способом. Эта функция совершенно новая для меня. После некоторого исследования я понял, что фрагмент должен быть использован.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

Мне интересно, LinearLayout - лучший вариант для макета? Во-вторых, можно ли программно добавлять части пользовательского интерфейса, такие как кнопки, кнопки выбора, на фрагмент?

Ответы [ 2 ]

1 голос
/ 12 января 2013

Если вы не хотите использовать макет фрагмента или сборку приложения в более низкой версии для Android, которая не поддерживает фрагменты, в этом случае вы можете получить разделенное представление, вызвав два отдельных файла XML в одном действии. Просто создайте два xml в соответствии с требованиями слева и справа. Маленький пример

LinearLayout layoutMain = new LinearLayout(this); layoutMain.setOrientation(LinearLayout.HORIZONTAL); setContentView(layoutMain); LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); RelativeLayout layoutLeft = (RelativeLayout) inflate.inflate( R.layout.firstxml, null); RelativeLayout layoutRight = (RelativeLayout) inflate.inflate( R.layout.secondxml, null);

RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutMain.addView(layoutLeft, 100, 100);
layoutMain.addView(layoutRight, relParam);

} `

0 голосов
/ 19 декабря 2011

Вы можете использовать любой макет с фрагментами, полностью зависит от ваших требований.

Да, вы можете добавлять виды, такие как кнопки и т. Д., Во Фрагмент программно.Объявите макет фрагмента как макет.

Одним из примеров программного добавления представлений - R.layout.main может быть LinearLayout без дочерних представлений

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
    ViewGroup mViewGroup = inflater.inflate(R.layout.main, container, false);
    Button mButton = new Button(getActivity());
    mButton.setLayoutParameters(new LinearLayout.LayoutParams(
                                 LinearLayout.LayoutParams.FILL_PARENT,
                                 LinearLayout.LayoutParams.FILL_PARENT));
    mViewGroup.add(mButton);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...