2つのListViews
(leftList、rightList)があります。また、両方で行ビューとして使用するTextView
が1つあります。長方形の描画可能な形状があり、それを背景としてTextView
に設定します。
この形を変えて、左側の角を丸くしたいと思います。
私が試したこと:
GradientDrawable gradientDrawable = new GradientDrawable();
// gradientDrawable.setCornerRadius(30);
((GradientDrawable)gradientDrawable.mutate()).setCornerRadius(30);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
viewHolderPattern.digits.setBackground(gradientDrawable);
}
右隅の半径を設定してdrawableで新しいレイアウトを作成し、それをsetBackgroundRescource
でtextViewに設定しましたが、それでも機能しませんでした。
両方のlistViewのアイテムとして使用するTextView
<TextView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/digitsTextView"
Android:textSize="15dp"
Android:paddingTop="7dp"
Android:paddingBottom="8dp"
Android:fontFamily="monospace"
Android:textColor="@color/selected_items"
Android:background="@drawable/digital_text_shape">
</TextView>
形状レイアウトdigital_text_shape.xml
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<stroke
Android:width="1dp"
Android:color="@color/orange" />
<solid Android:color="@color/orange" />
<corners
Android:bottomLeftRadius="20dp"
Android:bottomRightRadius="0dp"
Android:topLeftRadius="20dp"
Android:topRightRadius="0dp"
/>
<padding
Android:bottom="0dp"
Android:left="20dp"
Android:right="0dp"
Android:top="0dp" />
</shape>
左リストと右リスト
<!-- Left ListView -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
>
<ListView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center_horizontal"
Android:id="@+id/left_listView"
Android:divider="@Android:color/transparent"
Android:dividerHeight="0.1sp"
Android:choiceMode="singleChoice"
>
</ListView>
</LinearLayout>
<!-- Right ListView -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
>
<ListView
Android:id="@+id/right_listView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:divider="@Android:color/transparent"
Android:dividerHeight="0.1sp"
Android:choiceMode="singleChoice"
>
</ListView>
</LinearLayout>
プログラムでGradientDrawable
シェイプを作成する方法の例を次に示します。
GradientDrawable shape = new GradientDrawable();
shape.setShape(GradientDrawable.RECTANGLE);
shape.setColor(Color.RED);
shape.setStroke(3, Color.YELLOW);
グラデーションのすべてのコーナーの半径を変更します。
shape.setCornerRadius(15);
グラデーションの特定のコーナーの半径を変更します。
shape.setCornerRadii(new float[] { 8, 8, 8, 8, 0, 0, 0, 0 });
以下のように、このドローアブルを背景として使用できます。
view.setBackgroundDrawable(shape);