Intereting Posts
Андроидные фрагменты и их влияние на производительность Клавиши захвата, введенные на виртуальную клавиатуру Android, используя javascript Подпись Google Firebase, указывающая статус 12501 (не работает), в варианте сборки сборки и jks SHA Android mms скачать mms содержимое через mms url Как рассчитывается подсчет «Active Installs» / процент в Android-консоли разработчика? Android RelativeLayout: как выравниватьParentBottom при завершении в ScrollView? FEATURE_ACTIVITY_TRANSITIONS против FEATURE_CONTENT_TRANSITIONS Создайте SSL-Socket на Android с самозаверяющим сертификатом Список горизонтальных прокрутки Android Как импортировать класс android.support.v7.app.NotificationCompat.Builder в Android Studio Как получить или вычислить ширину / высоту раздутого вида Как установить размер рисунка в списке слоев Firebase android jars documentation / javadoc в Android Studio Метод InputTextLayout setError () в Android не работает Android Studio: «Предупреждение libpng: iCCP: не распознавание известного профиля sRGB, который был отредактирован»

Наложение макета xml в пользовательский класс View

У меня есть класс View1 который расширяет View . Я хочу раздуть R.layout.test2.xml в этом классе View1 . Я поместил следующий код в этот класс

 public class View1 extends View { View view; String[] countries = new String[] {"India", "USA", "Canada"}; public View1( Context context) { super(context); LayoutInflater mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view=mInflater.inflate(R.layout.test2, null, false); } } 

Из другого класса Home Я хочу, чтобы этот завышенный вид был там для некоторых обстоятельств. В классе Home я написал следующий код:

 public class Home extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); CreateView(); } public void CreateView() { LinearLayout lv=(LinearLayout)findViewById(R.id.linearlayout); View1 view = new View1(Home.this); lv.addView(view); } } 

Но когда я запускаю свой проект, деятельность не показывает мне ничего.

Solutions Collecting From Web of "Наложение макета xml в пользовательский класс View"

Вы не можете добавлять представления к классу View вместо этого следует использовать ViewGroup или один из его подклассов (например, Linearlayout , RelativeLayout т. Д.). Тогда ваш код будет выглядеть так:

 public class View1 extends LinearLayout { View view; String[] countries = new String[] {"India", "USA", "Canada"}; public View1( Context context) { super(context); LayoutInflater mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mInflater.inflate(R.layout.test2, this, true);}} 

Также строка:

 mInflater.inflate(R.layout.test2, null, false) 

Ничего не добавляет к текущему виду (из-за false параметра), он просто раздувает представление из макета xml.

Использовать это

  LayoutInflater li = (LayoutInflater)getContext().getSystemService(infService); li.inflate(R.layout.test2, **this**, true); 

Вы должны использовать this , а не null, и изменить параметр false (boolean AttachToRoot) на true

Используйте приведенный ниже код, чтобы раздуть макет, тогда вы можете использовать это представление для любых целей. Это даст вам самый родительский макет вашего xml-файла. Соответствует типу и использует.

Просмотреть headerView = View.inflate (это, R.layout.layout_name, null);

Вы добавляете пустое представление домашней активности. Потому что в классе View1 вы только раздуваете представление, но не добавляете нигде.

Вы должны использовать ViewGroup как FrameLayout и делать:

 public class View1 extends FrameLayout { public View1(Context context) { super(context); inflate(context, R.layout.view1, this); } } 

В XML-макете используйте тег <merge чтобы не просто добавить макет view1 к корневому макету, что означает, что у нас есть пустой FrameLayout и ваше определенное представление рядом друг с другом.

 <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="content" /> </merge> 

См. http://trickyandroid.com/protip-inflating-layout-for-your-custom-view/