Мне нужна «кнопка», которая будет иметь фон текстуры и динамический текст. Конечный результат должен быть таким, но фон - это текстурированное изображение. Я попытался использовать RelativeLayout
с TextView
внутри, но проблема в том, что результат CustomView
не wrap_content
по ширине/высоте.Android TextView с пользовательским фоном?
Вот custom_button
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@drawable/custom_button_selector"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerInParent="true"
/>
</RelativeLayout>
Вот Code
:
public class CustomButton extends RelativeLayout {
private LayoutInflater mInflater;
private RelativeLayout mContainer;
private TextView mTextView;
public CustomButton(Context context) {
super(context);
mInflater = LayoutInflater.from(context);
customInit(context);
}
public CustomButton(Context context, AttributeSet attrs) {
super(context, attrs);
mInflater = LayoutInflater.from(context);
customInit(context);
}
public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mInflater = LayoutInflater.from(context);
customInit(context);
}
private void customInit(Context ctx) {
mContainer = (RelativeLayout) mInflater.inflate(R.layout.cutom_button_view, this, true);
mTextView = (TextView) mContainer.findViewById(R.id.tv);
}
public RelativeLayout getContainer() {
return mContainer;
}
public TextView getTextView() {
return mTextView;
}
}
Это, как я использую его в данный момент, и это работает:
<com.myapp.views.CustomButton
android:id="@+id/btn"
android:layout_width="80dp"
android:layout_height="50dp"/>
Но я хочу, чтобы использовать его как это (для динамического текста), и он не будет работать:
<com.myapp.views.CustomButton
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Это будет на самом деле простирается через весь экран, игнорируя правила компоновки. Если это решение - плохая идея, можете ли вы порекомендовать альтернативу, которая даст одинаковые результаты?
что случилось с 'TextView.setBackground'? – pskink
он просто не центрирует текст на изображении ... Мне нужно использовать прописку, но она ломается с динамической длиной текста. На самом деле ядром моей проблемы является динамическая длина текста :( – nightfixed
Что не так с 'TextView.setGravity'? – pskink