#android
#Android
Вопрос:
Первоначально у меня был LinearLayout> ScrollView> TableLayout и приведенный ниже код:
LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.photos_layout, null);
setContentView(layout);
// TODO Auto-generated method stub
//get the tableLayout which we created in main.xml
tl = (TableLayout)findViewById(R.id.tableLayout1);
for(int i = 0; i < names.length; i ) {
//Create a new row to be added.
TableRow tr = new TableRow(this);
//Create text views to be added to the row.
TextView tv1 = new TextView(this);
TextView tv2 = new TextView(this);
//Put the data into the text view by passing it to a user defined function createView()
createView(tr, tv1, Integer.toString(i 1));
createView(tr, tv2, names[i]);
//Add the new row to our tableLayout tl
tl.addView(tr);
}
Проблема в том, что ScrollView может иметь только одного дочернего элемента, поэтому, если бы я хотел добавить больше представлений в дополнение к TableLayout, я не могу. Чтобы преодолеть эту проблему, я создал иерархию, подобную LinearLayout> ScrollView> LinearLayout> TableLayout. Однако теперь приведенный выше код приводит к сбою приложения.
Что мне нужно изменить, чтобы заполнить мою таблицу, а также добавить представления в мое недавно созданное linearlayout?
Комментарии:
1. Если у вас возникают сбои, вы должны включить вывод LogCat здесь
2. опубликуйте журнал сбоев. и некоторые XML-файлы?
3. Прежде всего, опубликуйте трассировку стека сбоя. Во-вторых, почему бы просто не создать весь макет полностью в xml или полностью программно? Если вы собираетесь делать это программно, вы должны определить параметры макета для добавления представлений к их родителям. Кроме того, scrollview может иметь только одного ПРЯМОГО дочернего элемента. Таким образом, вы можете разместить все, что хотите, внутри linearlayout, который находится внутри scrollview. Кроме того, могу я спросить, чего именно вы пытаетесь достичь? Вероятно, вы слишком усложняете свое представление…
4. ну, прямо сейчас это просто тестовое приложение, чтобы познакомиться с Android. У меня есть моя активность, и я хочу поместить в нее tablelayout и несколько кнопок. Он будет больше экрана, поэтому я поместил его внутри ScrollView. Но я думаю, что последую вашему совету и сделаю все это программно; Я ненавижу выяснять, как соединить макет и код.
5. @Adam опубликуйте журнал. Без этого мы не сможем вам помочь. Кроме того, вам, вероятно, просто нужен GridView или что-то в этом роде.
Ответ №1:
Я бы предложил удалить родительский LinearLayout. Scrollview сам по себе может быть родительским, а затем иметь один LinearLayout в качестве единственного прямого дочернего элемента.
В опубликованном вами коде, о котором вы упомянули, произошел сбой, вы не добавляете никакого представления к своему «вновь созданному» LinearLayout, вместо этого вы добавляете новую строку в свой TableLayout, которая, если я правильно догадываюсь, находится внутри вашего scrollview. Это совершенно нормально и не должно быть причиной сбоя.